官方阵营文档状态“ React.PureComponent
的shouldComponentUpdate()
只有比较浅的对象”,并建议针对这一点,如果状态是‘深’。
鉴于此,React.PureComponent
在创建React组件时,为什么有人应该偏爱它?
问题:
React.Component
我们可能会考虑使用它对性能有什么影响React.PureComponent
?- 我猜
shouldComponentUpdate()
的PureComponent
执行只有浅薄的比较。如果是这样,所述方法不能用于更深入的比较吗? - “此外,
React.PureComponent
会shouldComponentUpdate()
跳过整个组件子树的属性更新”-这是否意味着属性更改会被忽略?
如果有帮助的话,阅读该媒体博客会引起疑问。
正如我所看到的,主要区别在于组件每次父组件都重新发布时都会重新发布,而不管组件的属性和状态是否已更改。
另一方面,如果纯组件的父对象重新渲染,则不会重新渲染,除非纯组件的属性(或状态)已更改。
例如,假设我们有一个具有三级层次结构的组件树:父级,子级和孙级。
当父母的道具以仅改变一个孩子的道具的方式改变时,则:
但是,有时使用纯组件不会产生任何影响。当父母从redux商店收到道具时,需要对孩子的道具进行复杂的计算时,我遇到了这样的情况。父母使用平面清单来呈现其孩子。
结果是,每当redux存储区进行很小的更改时,都会重新计算儿童数据的整个平面列表。这意味着对于树中的每个组件,道具都是新对象,即使其值没有变化。
在这种情况下,纯组件无济于事,并且如果需要重新渲染,则只能通过使用常规组件并在shouldComponentUpdate中检入子代来实现性能提升。