嘿,每个人都可能是一个简单的问题,基本上,当我单击它时,我会得到一个按钮,该按钮会触发一个动作,并向下传递我连接的整个对象(如果该对象不是重复的,则传递给数组),但是奇怪的是,由于我将数据保存到本地存储并我从那里加载它后,它不会检查重复项并重复数组项。我的Reducer代码如下,可能存在错误?
尽可能搜索。
const initialState = {
favourites: []
};
const favourites = (state = initialState, action) => {
const { payload } = action;
switch (action.type) {
case actionTypes.ADD_FAVOURITES:
return {
...state,
favourites:
state.favourites.indexOf(payload) === -1
? state.favourites.concat(payload)
: state.favourites
};
default:
return state;
}
};
答案 0 :(得分:1)
这里的问题似乎是state.favourites.indexOf(payload)=== -1始终为真。这是因为函数Array.prototype.findIndex()does not find identical objects。
您应该使用另一种检查方法,以查看有效载荷对象是否已在收藏夹数组中。例如,您可以尝试如下操作:
const favourites = (state = initialState, action) => {
const { payload } = action;
switch (action.type) {
case actionTypes.ADD_FAVOURITES:
return {
...state,
favourites:
JSON.stringify(state.favourites).indexOf(JSON.stringify(payload)) === -1
? state.favourites.concat(payload)
: state.favourites
};
default:
return state;
}
};