产生
由react的更新机制可知可知PureComponent的产生及其应用场景。
- diff算法运行在哪个生命周期呢?
在render之后,render返回的是virtual DOM。diff算法就是对virtual DOM进行比较。从而以最优策略更新DOM。
我们刚才提到shouldComponentUpdate可以控制render函数是否调用,shouldComponentUpdate返回为false时不调用render。假如state和props并没有改变,那么调用render,执行diff运算就毫无意义。我们可以在shouldComponentUpdate钩子函数中比较state和props是否改变,如果没有改变直接返回false,不进行render调用。这时候react引入了PureComponent概念,他会在render之前对state和props进行浅比较,若state和props都相同,则不会调用render。这个浅比较是在shouldComponentUpdate中进行的,所以,使用PureComponent时不能在用shouldComponentUpdate钩子函数了,因为会覆盖默认的钩子函数行为。
应用场景
PureComponent 最佳情况是展示组件。如果更新次数频繁的组件,使用 PureComponent 只会带来大量的比较,降低了性能。
PureComponent VS Component
可阅读React 的 PureComponent Vs Component。
注意事项
PureComponent不能使用shouldComponentUpdate周期,会报错。
PureComponent更新机制
阅读React PureComponent 浅比较详解可以详情知道更新机制。
资料来源:
[1] 北极星__ react的更新机制可知
[2] huangpb0624 React PureComponent 浅比较详解
[3] shuxiaotai React 的 PureComponent Vs Component
网友评论