与Pure Component和setState进行浅层比较有什么价值?

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

虽然学习了纯组分,但我仍无法理解复杂对象之间进行浅层比较的方式,例如状态对象。

在示例中,setTimeout方法用于更新简单值,例如状态对象中的计数器编号,但该值只是设置为现有值。据我了解,setState创建一个新对象,并且不会改变原始状态。

因此,在较浅的比较中,即使它们包含具有相同值的简单属性,也不会有2个不同的状态对象指向2个不同的引用,因此,该比较应始终将对象显示为不同,但是该示例说,因为值与组件将不会重新呈现的值相同,因此浅表比较不仅可以查看对象引用,还能做更多的事情吗?

javascript reactjs components
1个回答
0
投票

根据文档,shallowCompare通过遍历对象上的键并在任何键的值在参数之间不严格相等时返回false来执行相等。当所有键的值严格相等时返回true。因此,它不会检查状态对象的引用。它将检查状态对象的属性。

  1. https://reactjs.org/docs/shallow-compare.html
  2. https://github.com/facebook/fbjs/blob/e85f39ae37e9650191e832c1d1ed8f02c272e9d1/packages/fbjs/src/core/shallowEqual.js#L39-L67
© www.soinside.com 2019 - 2024. All rights reserved.