【发布时间】:2017-06-13 12:48:46
【问题描述】:
我有一个看起来像这样的对象:
state: {
"1": {
"show": false,
"description": "one",
"children": {
"1": { "show": false, "description": "one" },
"2": { "show": false, "description": "one" }
}
},
"2": {
"show": false,
"description": "one",
"children": {
"1": { "show": false, "description": "one" },
"2": { "show": false, "description": "one" }
}
}
}
我有一个 for 循环将子“显示”属性更改为相反的布尔值。所以我尝试用这个来更新值,但是没有用。
for (var childKey in state[appClassId].children) {
newState = {
...state,
[appClassId]: {
children: {
[childKey]: { ...state[appClassId].children[childKey], show: !state[appClassId].children[childKey].show}
}
}
“appClassId”变量是我从操作中获得的变量。
如何更新子属性中的每个键,例如 state.1.children.1.show
【问题讨论】:
-
你能看看 redux 文档中的Normalizing State Shape 吗?我认为它会帮助你正常化你的状态并能够轻松地更新它!
-
它是标准化的,看看它在你的链接中给出的例子。
-
实际上,作为“结构化减速器”部分的作者,我认为“不可变更新模式”部分更相关:redux.js.org/docs/recipes/reducers/ImmutableUpdatePatterns.html
标签: javascript reactjs redux react-redux spread-syntax