切换对象数组中的Redux State属性

时间:2017-10-30 10:30:59

标签: reactjs ecmascript-6 redux

我有一个如下对象:

{
  "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的有效载荷。 23case 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不是最佳做法,因为你应该以这种方式重新分配参数。

执行相同功能的最佳方法是什么?

1 个答案:

答案 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,
      }
    },
  }
}