我有一个如下对象:
{
"1": {"stepNumber": 1, "isActive": false},
"2": {"stepNumber": 2, "isActive": true},
"3": {"stepNumber": 3, "isActive": true},
"4": {"stepNumber": 4, "isActive": false}
}
在我的reducer中,我正在通过TOGGLE_ACTIVE_STEP
发送一个stepNumber
例如1
的有效载荷。 2
或3
或case TOGGLE_ACTIVE_STEP: {
state.processSteps[action.data.stepNumber.toString()].isActive =
!state.processSteps[action.data.stepNumber.toString()].isActive;
console.log(JSON.stringify(state.processSteps));
return {
...state,
processSteps: state.processSteps,
};
}
...
这是我目前的减速机:
state
这是一个相当混乱的修复,我知道按照我的方式设置Record
不是最佳做法,因为你应该以这种方式重新分配参数。
执行相同功能的最佳方法是什么?
答案 0 :(得分:2)
继续传播道具,就像传播state
:
case TOGGLE_ACTIVE_STEP: {
return {
...state,
processSteps: {
...state.processSteps,
[action.data.stepNumber]: {
...state.processSteps[action.data.stepNumber],
isActive: !state.processSteps[action.data.stepNumber].isActive,
}
},
}
}