根据In Redux, is it necessary to do deep copy,为了处理嵌套对象的更新,我们应该制作多个浅拷贝,而不是深拷贝。
根据Redux文档,
如果要正确更新任何连接的组件,Redux使用浅等式检查需要不变性。要了解原因,我们需要了解JavaScript中浅层和深层相等检查之间的区别。
所以我有两个问题。
这意味着只需要复制状态的更新部分。如果state.foo
需要更新,应该有选择性的浅拷贝:
{
foo: {...prevState.foo, newValue},
bar
}
不是整个州的深层副本:
{
foo: {...prevState.foo, newValue},
bar: {...prevState.bar}
}
这导致更好的性能,并允许假设通过浅等式检查的状态的部分没有像prevState.bar === newState.bar
那样改变。