PureComponent
PureComponent
出现原因 && 解决问题
为避免嵌套使用的组件无必要的调用rerender下去… 推出 shouldComponentUpdate
api,后进一步推出PureComponent,只在state与props发生改变时才变动。
// 让我想到Vue,实则就是如此。只对注册的变量变化发生反应。但是Vue生成完dom节点后是否会再做一次比较呢
Why not use it everywhere?
思考角度问题。站在使用者的立场上考虑,做一下state与props的浅比较似乎很简单,state与props没变,底下的component都不用改变 多好。但是React开发者会觉得,大部分情况下state与props都是有发生变动的,这种情况下再比较state与props就是浪费资源了。比较总比不比慢。
另外,props不发生变动需要注意一些细节,比如杜绝inline-function.
https://twitter.com/dan_abramov/status/820668074223353858
When would a react component not be a pure component?
任何读取了非props/state变量的,都不能100%保证每次渲染的结果完全一致。比如读取Date.now().
PureComponent v.s. React.memo()
后者在props相同的情况下 整个class实例里的钩子都不会调用 直接不变。不像PureComponent 至少还有调用componentWillReceiveProps.