从状态加载时,Redux添加重复的数组项

时间:2019-06-19 19:46:05

标签: reactjs redux

嘿,每个人都可能是一个简单的问题,基本上,当我单击它时,我会得到一个按钮,该按钮会触发一个动作,并向下传递我连接的整个对象(如果该对象不是重复的,则传递给数组),但是奇怪的是,由于我将数据保存到本地存储并我从那里加载它后,它不会检查重复项并重复数组项。我的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;
}
};

1 个答案:

答案 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;
    }
};