反应浅比较多次工作?

问题描述 投票:1回答:1

根据In Redux, is it necessary to do deep copy,为了处理嵌套对象的更新,我们应该制作多个浅拷贝,而不是深拷贝。

根据Redux文档,

如果要正确更新任何连接的组件,Redux使用浅等式检查需要不变性。要了解原因,我们需要了解JavaScript中浅层和深层相等检查之间的区别。

所以我有两个问题。

  1. 那个浅层的等式检查是否意味着对多个浅层副本进行的嵌套对象进行多次浅层等式检查?如果没有,那么一个浅层等式如何才能正确检测深层嵌套对象的不变性?
  2. 根据https://redux.js.org/faq/performance#do-i-have-to-deep-clone-my-state-in-a-reducer-isnt-copying-my-state-going-to-be-slow,浅拷贝比深拷贝更快,因此坚持不使用深拷贝。我明白那个。但是我们必须多次使用浅拷贝来保持嵌套对象的不变性。因此不是多次浅拷贝和深拷贝在不变性方面的性能相同吗?
reactjs shallow-copy
1个回答
0
投票

这意味着只需要复制状态的更新部分。如果state.foo需要更新,应该有选择性的浅拷贝:

{
  foo: {...prevState.foo, newValue},
  bar
}

不是整个州的深层副本:

{
  foo: {...prevState.foo, newValue},
  bar: {...prevState.bar}
}

这导致更好的性能,并允许假设通过浅等式检查的状态的部分没有像prevState.bar === newState.bar那样改变。

© www.soinside.com 2019 - 2024. All rights reserved.