Реактивный элемент не удаляется из массива - PullRequest
0 голосов
/ 11 ноября 2019

У меня есть этот код здесь:

const favouriteMovies = (state = initialState, action) => {
  switch(action.type) {
    case 'setMovieToFavourites': return {
      ...state,
      hearted: [...state.hearted, action.movie]
    }
    default: return state;
  }
}

const unlikeMovie = (state = initialState, action) => {
  switch(action.type) {
    case 'unlikeMovie': return {
      ...state,
      hearted: state.hearted.filter(item => item !== action.movie),
    }
    default: return state;
  }
}

Итак, первая функция favouriteMovies добавляет фильмы в массив, а со второй функцией я хочу удалить фильм из hearted фильмов. В функции unlikeMovie я получаю movieID, равный одному из фильмов liked, но он не удалит фильм из состояния hearted. Почему это не убирает?

Ответы [ 2 ]

2 голосов
/ 11 ноября 2019

Похоже, вам может понадобиться сравнить идентификаторы для фильтрации фильма в функции unlikeMovie.

Трудно сказать точно, не зная больше о структуре объекта movie, но предполагая action.movie - это тот же тип объекта, что и item в вашем примере кода, и они оба имеют свойство ID movieID, что-то вроде этого должно работать:

const unlikeMovie = (state = initialState, action) => {
  switch(action.type) {
    case 'unlikeMovie': return {
      ...state,
      hearted: state.hearted.filter(item => item.movieID !== action.movie.movieID),
    }
    default: return state;
  }
}

Надеюсь, это поможет!

1 голос
/ 11 ноября 2019

Можете ли вы проверить этот код?

const movies = (state = initialState, action) => {
  switch(action.type) {
    case 'setMovieToFavourites': return {
      ...state,
      hearted: [...state.hearted, action.movie]
    }

    case 'unlikeMovie': return {
      ...state,
      hearted: state.hearted.filter(item => item !== action.movie),
    }
    default: return state;
  }
}

export default movies;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...