如何在 React Redux 中存储唯一项?

How to store unique item in react redux?

我想在我的 redux 篮子中存储唯一值,但我无法存储它。 我实现了从 Whosebug 本身找到的这段代码,但它对我不起作用。我仍然得到存储在 redux 中的重复值。

看到这个:

代码:

    export const initialState = {
        basket: []
    }
    
    const reducer = (state, action) => {
        switch(action.type){
            case 'Add_To_New':
                if (state.basket.indexOf(action.item) === -1) {
                    return {
                        ...state,
                        basket:[...state.basket, action.item],
                    };
                }
                return state;
                default:
                    return state;
        }
    }
    
    export default reducer;

在购物篮中,如果这个用户已经存在,我只想存储一次。如果我再次添加用户,它不应该存储它,而是 return 以前存储的值。

没有看到您的更多代码,您正在执行的 indexOf 可能与现有对象不匹配,可能是因为您要匹配的对象中包含一些不同类型的数据.

假设你的 item 有某种 id 字段,我将使用 id 作为这个例子,你也可以做类似

export const initialState = {
    basket: []
}

const reducer = (state, action) => {
    switch(action.type){
        case 'Add_To_New':
            if (!state.basket.map(item => item.id).includes(action.item.id) {
                return {
                    ...state,
                    basket:[...state.basket, action.item],
                };
            }
            return state;
            default:
                return state;
    }
}

export default reducer;