Spread运算符ES6更改数组

时间:2017-09-12 21:59:46

标签: javascript redux spread-syntax

case SET_WINE_ITEMS:
  const { index, name, value } = action.payload
  const items = state.items
  items[index][name] = value
  return { ...state, items }

使用扩展运算符实现上述代码是否有简洁的方法?

1 个答案:

答案 0 :(得分:0)

感谢您的评论。我的对象数组的结构如下,其中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 }