pureComponent
通过对比props的改变,自动调用shouldComponent
优点: 减少render优化性能
缺点: props对比是浅比较,可能导致子组件该渲染的时候没有渲染
- shouldComponent的bug
class Father extends React.PureComponent{
handleClick = (list) => {
const { data } = this.state;
data.push(list)
this.setState({
data
})
}
render(){
return(
<ChildComponent data={data}>
)
}
}
按道理,handleClick更新了data,子组件应该更新
但是由于pureComponet原因,data并没有改变指向,所以子组件不会更新
子组件执行:
static getDerivedStateFromProps(nexrprops){}
shouldComponent(){return false}
改写
class Father extendsReact.PureComponent{
handleClick = (list) => {
const { data } = this.state;
this.setState({
data:[...data,1] // 这样会触发ChildComponent的render
})
}
render(){
return(
<ChildComponent data={data}>
)
}
}