reactjs - 在 React / Redux 中添加/更新对象的深层数组
问题描述
在我的 react redux reducer 中,如何使用扩展运算符添加或更新深层嵌套的对象数组?我无法正确使用语法。
我的状态大致是这样的:
state: {
fields...
ups: {
fields...
ftr: {
fields...
arts: [
{
artId: 12,
name: ‘joe’,
phones: [
{
phoneId: 58,
number: ‘nnn’
}
]
}
]
}
}
}
我artId
带着一个空phone
对象或一个现有对象来添加/更新phones
数组。同样,对于 parent 也是如此arts
。不能做byId
也太晚了,不能切换到“normilizr”。
解决方案
首先,要理解您遇到的确切问题有点困难。如果您可以提供一些用于更新减速器内部状态的代码,而不仅仅是状态的形状,这将非常有用。为了准确辅助,我们需要看更多代码..
话虽如此,如果我正确理解这一点,当您在减速器中更新状态时,您需要先进行深层复制..或者您是否尝试像这样使用扩展运算符:fields...
?...或者是只是为了简洁?
扩展运算符提供了一个浅副本,因此您必须执行以下操作才能获得深 [er] 副本:
case types.SOME_CONSTANT: {
let _newstate = JSON.parse(JSON.stringify(state));
_newstate.some.deep.nested.property = action.payload;
return _newstate;
}
推荐阅读
- windows - 从 Windows 命名管道读取/写入
- c# - 如何使用 Codedom 验证字段?
- javascript - 如何根据子表样式可见性隐藏父表
- angular - 无法从 firebase 实时数据库中获取键值
- c - 有符号类型是否假设为 32 位?
- c - 获取输入并将其打印到窗口的简单方法
- makefile - 如何使 Makefile 回显以使用`/bin/echo -e`?
- qt - 即使我按下 Key_F10 或 Key_F11 也会实现 Qt::Key_F9 案例
- loops - Fortran:带有实型参数的 do-loop
- sql - SQL Server 临时表检查性能