Skip to content

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.