export class App extends Component {
shouldComponentUpdate(prevProps, nextState) {
return isEqual(prevProps, this.props)
}
}
export class App extends PureComponent {}
Component
使用Component时,父组件的 state或 prop更新时,无论子组件的state、prop是否更新,都会触发子组件的更新。
优化是需要开发者在 shouldComponentUpdate钩子函数中自己写 render 逻辑的
缺点:
- 没必要的重复 render,浪费性能
PureComponent
pureComponent在 shouldComponentUpdate时,通过对新旧的 prop和 state浅比较 shallowEqual,
进行浅比较,只要对象引用地址没变化,就不会触发render,减少了不必要的render。
缺点
- 如果是嵌套深的对象,因为引用地址都一样,会导致页面不会更新