继承自Component的组件,若是shouldComponentUpdate返回false,就不会渲染了,继承自PureComponent的组件不用我们手动去判断prop和state,所以在PureComponent中使用shouldComponentUpdate会有如下警告:
IndexPage has a method called shouldComponentUpdate(). shouldComponentUpdate should not be used when extending React.PureComponent. Please extend React.Component if shouldComponentUpdate is used.
PureComponent通过prop和state的浅比较来实现shouldComponentUpdate,某些情况下可以用PureComponent提升性能
浅比较(shallowEqual),即react源码中的一个函数,然后根据下面的方法进行是不是PureComponent的判断
哪些情况下可以使用PureComponent来提升性能 例1: IndexPage组件,设置了一个state是isShow,通过一个按钮点击可以改变它的值,结果是:初始化的时候输出的是constructor,render,而第一次点击按钮,会输出一次render,即重新渲染了一次,界面也会从显示false变成显示true, --- 当这个组件是继承自PureComponent的时候,再点击的时,不会再输出render,即不会再重新渲染了 --- 而当这个组件是继承自Component时,还是会输出render,还是会重新渲染,这时候就是PureComponent内部做了优化的体现
例2 :
PureComponent不仅会影响本身,而且会影响子组件,所以PureComponent最佳情况是展示组件