【发布时间】:2023-03-16 04:05:02
【问题描述】:
假设我有这样的标准化状态(使用 normalizr)
entities: {
todos: {
'aaa': {
id: 'aaa',
text: 'Todo A',
completed: false
},
'bbb': {
id: 'bbb',
text: 'Todo B',
completed: false
},
'ccc': {
id: 'ccc',
text: 'Todo C',
completed: false
}
}
}
然后我有一个从服务器获取 ID 数组的操作,这些操作已完成。对于那种动作类型,我有这样的减速器:
const todos = (state = initialState, action) => {
switch (action.type) {
case ActionTypes.FETCH_COMPLETED_SUCCESS:
return {
...state,
todos: action.payload.completedIds.map((id) => {
return {
[id]: {
...state.todos[id],
completed: true
}
}
})
};
default:
return state;
}
};
如果我收到一个带有 ['aaa', 'ccc'] 的数组(在现实世界的应用程序中可能是数千个项目),我想在单个操作中将这些相应的待办事项上的“已完成”设置为 TRUE,是吗可能吗?
我当前的 reducer 实现不起作用,因为它返回一个对象数组,而原始规范化状态是以 ID 作为键的对象。
谢谢。
【问题讨论】:
标签: javascript reactjs redux