虽然学习了纯组分,但我仍无法理解复杂对象之间进行浅层比较的方式,例如状态对象。
在示例中,setTimeout方法用于更新简单值,例如状态对象中的计数器编号,但该值只是设置为现有值。据我了解,setState创建一个新对象,并且不会改变原始状态。
因此,在较浅的比较中,即使它们包含具有相同值的简单属性,也不会有2个不同的状态对象指向2个不同的引用,因此,该比较应始终将对象显示为不同,但是该示例说,因为值与组件将不会重新呈现的值相同,因此浅表比较不仅可以查看对象引用,还能做更多的事情吗?
根据文档,shallowCompare通过遍历对象上的键并在任何键的值在参数之间不严格相等时返回false来执行相等。当所有键的值严格相等时返回true。因此,它不会检查状态对象的引用。它将检查状态对象的属性。