例如,
constructor(props) {
super(props);
this.state = {
interactions: {
liked: [],
saved: [],
receivedLikeRecently: null
}
}
我试图绕过不变性,所以如果我现在要将receivedLikeRecently
更新为true
,我是否必须这样做:
this.setState({
interactions: {
receivedLikeRecently: true
}
});
其他价值怎么样?我是否还需要包括它们?
根据文档,setState执行浅合并,所以我假设其他嵌套属性不会复制到右边?还是我误会了?
由于
答案 0 :(得分:2)
你应该保持你的状态保持平稳,以避免深度合并,这必须手动完成,并且可能会变得非常烦人,除了如果经常进行性能损失。
Component.setState
使用简单的===
来测试属性是否已更改,这将导致它始终更新状态对象的对象值属性。
答案 1 :(得分:1)
你是对的,嵌套状态更新需要更精细的合并。
有一个状态规范化的概念,为Redux描述,但也适用于React状态。 http://redux.js.org/docs/recipes/reducers/NormalizingStateShape.html
我们的想法是,将状态视为关系数据存储,以便于使用它。