Redux的Reducer - 用键作为数字更新

时间:2017-08-13 05:35:14

标签: reactjs redux react-redux

在我目前的实现中,我有一个初始状态:

const state = {
  1: {id: 1, status: false},
  2: {id: 2, status: false}
}

如果我想更新项目的状态,我很难正确地实现减速器。

我有以下内容:

export default function (state = initialState, action) {
  switch (action.type) {
    case UPDATE_TO_TRUE: {
      const { itemID } = action;
      let item = itemID.toString();
      return {
        ...state,
        item: {
          status: true
        }
      }
    }
    default: {
      return state;
    }

  }
}

基本上我无法弄清楚如何精确定位正确的钥匙。棘手的是,键被设置为数字。

2 个答案:

答案 0 :(得分:1)

尝试在对象文字定义中使用计算属性键:

return {
    ...state,
    [item]: {
      id: item,
      status: true
    }
  }

答案 1 :(得分:0)

您可以使用括号表示法访问所需的项目,只要密钥可以用字符串表示,就可以使用括号表示法。例如:

const state = {
  1: {id: 1, status: false},
  2: {id: 2, status: false}
};

console.log(state['2']);

返回你的第二个项目。