Ваши редукторы должны быть чистыми функциями, то есть они не должны изменять переданное состояние.
Однако здесь вы изменяете состояние, поскольку переменная favourite
, которую вы создаете , не содержать копию избранного объекта в вашем состоянии, но просто ссылку на него . Следовательно, когда вы используете splice, вы фактически изменяете исходный массив recipes
, а не создаете новый, поэтому Redux не может обнаружить, что он изменился, поскольку это фактически тот же объект!
To Чтобы избежать этой проблемы, вы можете сделать что-то вроде этого:
if (action.type === "REMOVE_RECIPE_FROM_FAV") {
return {
...state,
favourite: {...favourite,
recipes: { state.favourite.recipes.slice(action.data, action.data + 1) }
}
};
}
Я предполагаю, что action.data
содержит индекс удаляемого элемента.