【发布时间】:2020-02-08 12:27:35
【问题描述】:
任何人都可以帮助解决此更新模式。我没有使用任何像 immer 这样的库。
我必须更新一个嵌套对象,并且数据看起来像 dis
样本数据
{
isFetching: false
data:{
nba : {
stack :{
1:[]
}
}
}
}
我的减速器
{
...state,
isFetching: false,
data: {
...state.data,
[action.payload.team]: {
...state[action.payload.team],
[action.payload.framework]: {
...state[action.payload.framework],
[action.payload.build]: action.payload.resp
}
}
}
};
我可以更新到第二级,但无法更新第三个孩子。 谁能告诉我我想念它的地方。
我在代码沙盒上放了一个演示。 https://codesandbox.io/s/todos-0ygrs
单击折叠和内部折叠项。我正在下面的控制台中记录状态的更改。正如您在上一级看到的那样,内部版本号正在被新版本所取代。
当前行为 在你扩展 nba 和所有三个孩子之后
{
nba: {
stack:{
3:[]
}
}
预期行为: 在您展开堆栈和所有三个孩子之后
{
nba: {
stack:{
1:[],
2:[],
3:[]
}
}
}
【问题讨论】:
-
@joseph.. 不,你扩展了所有子面板吗?..我没有看到上面提到的预期行为..它只显示了我们最后扩展的 1 个面板 ID 例如:堆栈{ 1: [ ] } 如果我们展开第二个面板,它正在更新为 stack: { 2: [ ]} .. 我在哪里寻找 stack:{ 1:[ ], 2:[ ]}
标签: reactjs ecmascript-6 redux immutability