【发布时间】:2018-05-25 05:47:13
【问题描述】:
我是 Immutability Helper React 库的新手,我正在尝试同时更新多个状态值,但只有最后一个调用方法的状态正在更新。
这是我尝试过的:
state : {l0: null, l1: null}
updateL0 = (l0) => {
if(l0){
this.setState(
update(this.state, {
l0: { $set: l0 }
})
);
}
};
updateL1 = (l1) => {
if(l1){
this.setState(
update(this.state, {
l1: { $set: l1 }
})
);
}
};
Current Output: l1: null, l2: Expected Value
Expected Output: l1: Expected Value , l2: Expected Value
【问题讨论】:
-
我不熟悉不变性助手,但尝试使用像这样的扩展运算符 { l0: { $set: l0 }, l1: { ...state }}。至于每个条件你只是 l0 或 l1 所以这就是为什么另一个保持默认。
-
@MontyGoldy setState 不会立即修改
this.state所以当你在 this.setState 之后使用 this.state 时,你实际上得到的是未修改的版本。由于您使用不可变状态,因此您将获得未修改的状态(有关更多信息,请参见答案)。所以使用扩展运算符并不能解决这个问题。 -
感谢您的参与。 @HMR
标签: javascript node.js reactjs react-state-management react-state