反应浅比较多次工作吗?

时间:2019-04-16 07:09:51

标签: reactjs shallow-copy

根据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,浅拷贝比深拷贝快,因此请坚持不要使用深拷贝。我明白那个。但是我们必须多次使用浅表复制来保持嵌套对象的不变性。那么,对于不变性来说,浅拷贝和深拷贝是否多次表现出相同的性能?

1 个答案:

答案 0 :(得分:0)

这意味着仅需要复制状态的更新部分。如果a:not([href]):not([tabindex]) { color: inherit; text-decoration: none; 需要更新,则应该有选择的浅表副本:

state.foo

不是整个状态的深层副本:

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

这会带来更好的性能,并允许假设通过浅层相等性检查的状态部分没有像{ foo: {...prevState.foo, newValue}, bar: {...prevState.bar} } 那样发生变化。