我在redux状态下有一个变量,它似乎是一个键对象,其ID为ID,值作为内容,,
如您所见,请将该状态变量命名为
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 }
}
答案 0 :(得分:1)
浅复制要更新对象的所有状态。您可以将id
用作动态键。
case UPDATE_CAPACITY:
return {
...state, // <-- copy current state
[id]: {
...state[id], // <-- copy current element
availableCapacity: state[id].availableCapacity + 1 // <-- increment capacity
}
}