小编典典

更新Redux存储中的嵌套数据

reactjs

使用redux更新商店中嵌套数据数组的最佳/正确方法是什么?

我的商店看起来像这样:

{
    items:{
        1: {
            id: 1,
            key: "value",
            links: [
                {
                    id: 10001
                    data: "some more stuff"
                },
                ...
            ]
        },
        ...
    }
}

我有一对异步操作来更新完整的items对象,但是我还有另一对操作要更新特定的links数组。

我的减速器当前看起来像这样,但是我不确定这是否是正确的方法:

  switch (action.type) {
    case RESOURCE_TYPE_LINK_ADD_SUCCESS:
      // TODO: check whether the following is acceptable or should we create a new one?
      state.items[action.resourceTypeId].isSourceOf.push(action.resourceTypeLink);
      return Object.assign({}, state, {
        items: state.items,
      });
  }

阅读 329

收藏
2020-07-22

共1个答案

小编典典

React的update()不变性帮助器是一种创建普通旧JavaScript对象的更新版本而无需对其进行突变的便捷方法。

您为它提供了要更新的源对象和一个对象,该对象描述了需要更新的片段的路径以及需要进行的更改。

例如,如果某个动作具有idlink属性,并且您想将推link送到以键为键的项中的链接数组id

var update = require('react/lib/update')

// ...

return update(state, {
  items: {
    [action.id]: {
      links: {$push: action.link}
    }
  }
})

(示例使用ES6计算的属性名称作为action.id

2020-07-22