id-键值对如何更新React Redux状态对象

时间:2020-08-21 03:52:17

标签: javascript reactjs redux react-redux

我在redux状态下有一个变量,它似乎是一个键对象,其ID为ID,值作为内容,enter image description here, 如您所见,请将该状态变量命名为capacity,它不是数组或列表,而是一个普通对象,我想将item属性availableCapacity中的一个增加为操作中的值有效负载按ID,所以这就是我可以做的

const updatedCapacity = {
   ...state.capacity[id],
        availableCapacity: state[id].availableCapacity + 1
   };

和我的updatedCapacity看起来像

{
  active: true
  avaialbleCapacity: 31
  capacity: "2febf..."
  totalCapacityAvailable: 30
}

但是我如何才能通过id找到处于状态的元素,然后将其替换为修改后的updatedCapacity?我在下面尝试过,但是在第一个示例中它在state.capacity中添加了一个新条目,在第二个示例中,它添加了键值“ id”而不是我的确切ID“ 2febfxxxx”的新条目...

case UPDATE_CAPACITY:
  return {
     ...state.capacity,
     updatedCapacity
  }
or
case UPDATE_CAPACITY:
  return {
     ...state.capacity,
     id: { updatedCapacity }
  }

1 个答案:

答案 0 :(得分:1)

浅复制要更新对象的所有状态。您可以将id用作动态键。

case UPDATE_CAPACITY:
  return {
    ...state, // <-- copy current state
    [id]: {
      ...state[id], // <-- copy current element
      availableCapacity: state[id].availableCapacity + 1 // <-- increment capacity
    }
  }