Javascript 如何更新id-键值对的react-redux状态对象

Javascript 如何更新id-键值对的react-redux状态对象,javascript,reactjs,redux,react-redux,Javascript,Reactjs,Redux,React Redux,我有一个处于redux状态的变量,它似乎是一个key为id、value为content的对象, 正如您所看到的,这个状态变量(我们称之为capacity)不是一个数组或列表,而是一个普通的对象,我想增加一个item属性availableCapacity,将其作为我的操作负载中的值(按id),所以我可以这样做 const updatedCapacity = { ...state.capacity[id], availableCapacity: state[id].availa

我有一个处于redux状态的变量,它似乎是一个key为id、value为content的对象, 正如您所看到的,这个状态变量(我们称之为
capacity
)不是一个数组或列表,而是一个普通的对象,我想增加一个item属性
availableCapacity
,将其作为我的操作负载中的值(按id),所以我可以这样做

const updatedCapacity = {
   ...state.capacity[id],
        availableCapacity: state[id].availableCapacity + 1
   };
我的
更新容量将如下所示

{
  active: true
  avaialbleCapacity: 31
  capacity: "2febf..."
  totalCapacityAvailable: 30
}
但是,我如何通过id找到处于我状态的元素,然后用我修改的
更新的容量替换它呢?我在下面进行了尝试,但在第一个示例中,它在我的state.capacity中添加了一个新条目,在第二个示例中,它添加了一个键值为“id”的新条目,而不是我的确切id“2febfxxx”


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

case UPDATE_CAPACITY:
  return {
    ...state, // <-- copy current state
    [id]: {
      ...state[id], // <-- copy current element
      availableCapacity: state[id].availableCapacity + 1 // <-- increment capacity
    }
  }
案例更新\u容量:
返回{

…state,//谢谢!在
之后做
[id]
在这里做什么?我的意思是
括号
为什么会在这里?@KevDing对象属性访问器。有点低。如果对象是
state={foo:'bar',a:0,b:'test'
id='foo'
,那么
{state,{state,[id]:'bizzbuzzz}
将导致
{foo:'bizzbuzz',a:0,b:'test'}
。我的回答是否解决了您的状态更新问题?
case UPDATE_CAPACITY:
  return {
    ...state, // <-- copy current state
    [id]: {
      ...state[id], // <-- copy current element
      availableCapacity: state[id].availableCapacity + 1 // <-- increment capacity
    }
  }