首页 > 解决方案 > 在 Redux reducer 中合并具有相同键的数组对象元素

问题描述

我的减速机如下:

    export const favorites = (state = {
    favorites: [],
    countFavorite: [],
    }, action) => {
        switch (action.type) {
            case ActionTypes.ADD_FAVORITE:
                return { ...state, favorites: action.payload };

        case ActionTypes.COUNT_FAVORITE:
            return { ...state, countFavorite: [...state.countFavorite, action.payload] };
        default:
            return state;
    }
};

电流我得到以下与旧状态和新状态:

在此处输入图像描述

我希望新对象用数组中的相同键覆盖现有对象,非常感谢任何帮助

标签: javascriptreact-nativereduxredux-reducers

解决方案


首先,您应该检查密钥是否存在,然后添加更多项目:

switch (action.type) {
    case ActionTypes.ADD_FAVORITE:
        return { ...state, favorites: action.payload };

    case ActionTypes.COUNT_FAVORITE: {
        let key = Object.keys(action.payload)[0];
        return { ...state, countFavorite: [...state.countFavorite.filter(fa => Object.keys(fa)[0] !== key), action.payload] };
    }
    default:
        return state;
}

推荐阅读