如何解决id-键值对如何更新React Redux状态对象
我在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 }
}
解决方法
浅复制要更新对象的所有状态。您可以将id
用作动态键。
case UPDATE_CAPACITY:
return {
...state,// <-- copy current state
[id]: {
...state[id],// <-- copy current element
availableCapacity: state[id].availableCapacity + 1 // <-- increment capacity
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。