React中的PureComponent

148 阅读1分钟

React中的纯组件PureComponent

React.PureComponent 与 React.Component 几乎完全相同,但 React.PureComponent 通过props和state的浅对比来实现 shouldComponentUpate()。

在普通的Component中可以使用shouldComponentUpdate来优化性能。

例如:

export default oneComponent extends Component {
  setCount = () => {
    this.setState({num100})
  }
  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,导致界面得不到更新