如何在reducer中更新嵌套对象的值时在spread中使用变量?

时间:2018-06-26 10:22:00

标签: redux ngrx-store

我的问题仅比question here领先一步

我想知道是否有任何方法可以使用变量代替“专业”(这是参考问题中的关键),因为我的模型属于以下类型:

const list = {
  categories: {
    1: {
      name: "Golf",
      active: false
    },
    2: {
      name: "Ultimate Frisbee",
      active: false
    }
  }
}

我想在下面的代码中访问1和2,即ID:

return {
  ...state,
  categories: {
    ...state.categories,
    <dynamic_Id>: {
      name:"xyz"
    }
  }
}

我的主要目的是更新所选ID的名称属性。 请让我知道是否有任何解决方案。 预先感谢。

2 个答案:

答案 0 :(得分:3)

我认为这就是你的追求

  return {
      ...state,
      categories: {
        ...state.categories,
        [idProp]: {
        ...state.categories[idProp],
          name:"xyz"
        }
      }
    }

答案 1 :(得分:1)

所以最后我的解决方法如下:

let idProp = 1;
return {
      ...state,
      categories: {
        ...state.categories,
        [idProp]: {
        ...state.categories[idProp],
          name:"xyz"
        }
      }
    }