javascript - 在 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;
}
};
电流我得到以下与旧状态和新状态:
我希望新对象用数组中的相同键覆盖现有对象,非常感谢任何帮助
解决方案
首先,您应该检查密钥是否存在,然后添加更多项目:
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;
}
推荐阅读
- mysql - 续集当我使用行查询时是否支持将蛇形转换为骆驼形
- r - 每年一个闪避的条形图
- node.js - 在反应js中加载期间播放音频文件
- node.js - NodeJS:上传前保存文件
- function - 什么编程语言在函数的参数“内部”和“之后”有冒号
- spring-boot - Pod 进入崩溃返回循环
- r - 在 R 中的预测函数中获取空数据错误
- angular - 从 tslint 切换到 eslint 后,Angular 12 模板 linting 不起作用
- javascript - 对如何在来自 javascript 的 C# .NET 中实现 HMACSHA1 感到困惑
- django - AttributeError:此方法仅适用于类,不适用于实例。Django 视图集