React中Component和PureComponent深度解析
React.PureComponent与React.Component几乎完全相同,但React.PureComponent通过props和state的浅对比来实现shouldComponentUpdate().
在PureComponent中,如果包含比较复杂的数据结构,可能会因为深层的数据不一致而产生错误的否定判断,导致界面得不到更新。
如果定义了shouldComponentUpdate(),无论组件是否是PureComponent,它都会执行shouldComponentUpdate结果来判断是否update。如果组件未实现shouldComponentUpdate(),则会判断该组件是否是PureComponent,如果是的话,会对新旧props、state进行shallowEqual比较,一旦新旧不一致,会触发update.
浅对比:通过遍历对象上的键执行相等性,并在任何键具有参数之间不严格相等的值时返回false。当所有的键的值严格相等时返回true。
区别点:
PureComponent自带通过props和state的浅对比来实现shouldComponentUpdate(),而Component没有。
PureComponent确定
可能会因为深层的数据不一致而产生错误的否定判断,从而shouldComponentUpdate结果返回false,界面得不到更新。
PureComponent优势
不需要开发者自己实现shouldComponentUpdate,就可以进行简单的判断来提升性能。