使用redux更新商店中嵌套数据数组的最佳/正确方法是什么?
我的商店看起来像这样:
{ items:{ 1: { id: 1, key: "value", links: [ { id: 10001 data: "some more stuff" }, ... ] }, ... } }
我有一对异步操作来更新完整的items对象,但是我还有另一对操作要更新特定的links数组。
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, }); }
React的update()不变性帮助器是一种创建普通旧JavaScript对象的更新版本而无需对其进行突变的便捷方法。
update()
您为它提供了要更新的源对象和一个对象,该对象描述了需要更新的片段的路径以及需要进行的更改。
例如,如果某个动作具有id和link属性,并且您想将推link送到以键为键的项中的链接数组id:
id
link
var update = require('react/lib/update') // ... return update(state, { items: { [action.id]: { links: {$push: action.link} } } })
(示例使用ES6计算的属性名称作为action.id)
action.id