Pure Component默认会在shouldComponentUpdate
方法中做浅比较. 这种实现可以避免可以避免发生在state或者props没有真正改变的重新渲染.
Recompose提供了一个叫pure
的高阶组件来实现这个功能, React在v15.3.0中正式加入了React.PureComponent
.
export default (props, context) => {
// ... do expensive compute on props ...
return <SomeComponent {...props} />
}
import { pure } from 'recompose';
// This won't be called when the props DONT change
export default pure((props, context) => {
// ... do expensive compute on props ...
return <SomeComponent someProp={props.someProp}/>
})
// This is better mainly because it uses no external dependencies.
import { PureComponent } from 'react';
export default class Example extends PureComponent {
// This won't re-render when the props DONT change
render() {
// ... do expensive compute on props ...
return <SomeComponent someProp={props.someProp}/>
}
}
})