React中的纯组件PureComponent
React.PureComponent 与 React.Component 几乎完全相同,但 React.PureComponent 通过props和state的浅对比来实现 shouldComponentUpate()。
在普通的Component中可以使用shouldComponentUpdate来优化性能。
例如:
export default oneComponent extends Component {
setCount = () => {
this.setState({num: 100})
}
shouldComponentUpdate(nextProps, nextState) {
return nextState.num !== this.state.num
}
render() {
console.log('render')
return <div>{this.state.num}</div>
}
}
上述中如果num不变时候,不让其再次render。所以这里用到shouldComponentUpdate来手动实现
但是在PureComponent则不需要自己手动去实现
例:
export default oneComponent extends PureComponent {
}
上述中继承自PureComponent,则不需要再次写shouldComponentUpdate,即可实现。
但是值得注意的是: PureComponent只是对数据进行浅对比,如果存在obj或者复杂数据结构则不可用。 在PureComponent中,如果包含比较复杂的数据结构,可能会因深层的数据不一致而产生错误的否定判断,从而shouldComponentUpdate结果返回false,导致界面得不到更新