扩展运算符 ES6 更改数组中对象中的一个字段
Posted
技术标签:
【中文标题】扩展运算符 ES6 更改数组中对象中的一个字段【英文标题】:Spread operator ES6 changing one field in an object in an array 【发布时间】:2018-02-21 11:32:33 【问题描述】:case SET_WINE_ITEMS:
const index, name, value = action.payload
const items = state.items
items[index][name] = value
return ...state, items
有没有一种简洁的方法可以使用扩展运算符来实现上面的代码?
【问题讨论】:
不是答案,只是反馈。在items[index][name] = value
中,您正在改变 redux 状态。不建议这样做。你会想先复制数组const item = [...state.items]
;然后用 ``items[index][name] = value` 变异就可以了;
developer.mozilla.org/en-US/docs/Web/javascript/Reference/…
需要更多关于状态对象结构的信息
【参考方案1】:
感谢您的 cmets。我的对象数组的结构如下,其中 items 数组中可以有很多对象。
items: [
name: '',
code: '',
quantity: '',
netBottlePrice: '',
netCasePrice: '',
caseSize: '',
volume: '',
volumeUnit: '',
amount: ''
]
我找到了一种方法来完成更新 redux 状态而不使用扩展运算符对其进行变异:
case SET_WINE_ITEMS:
const index, name, value = action.payload
const item = ...state.items[index], [name]: value
const items = [...state.items.slice(0, index), item, ...state.items.slice(index +1) ]
return ...state, items
【讨论】:
以上是关于扩展运算符 ES6 更改数组中对象中的一个字段的主要内容,如果未能解决你的问题,请参考以下文章