27. React - PureComponent

Component的2个问题:
  1.只要执行setState() ,即便不改变状态数据,组件也会重新render()  ==> 效率极低
  2.只要当前组件重新render(),就会自动重新render子组件,即时子组件没有用到父组件的任何数据 ==>  数据低  

效率高的做法:
  只有当组件的state或者props数据发生改变时才重新render()

原因
  Component中的shouldComponentUpdate这个生命周期钩子(控制state或props更新的阀门)不写即返回true

解决
  方法1:重新shouldComponentUpdate() 方法
  比较新旧state或props数据,如果有变化才返回true,否则返回false

  例:
  shouldComponentUpdate (nextProps, nextState){    // 接收两个形参 调用setState后的props和state
    if (this.state.xxx === nextState.xxx) return false;    // props同理
    return true;    
  }

  方法2:使用pureComponent标签
  import { PureComponent } from 'react'

  class A extends PureComponent {
      ......
  }
  这样当我们改变state或者props时,当数据真实发生变化时才会更新
(如果传的是Object类型的数据,React底层判断的逻辑是数据的引用地址是否发生变化)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容