setState原理揭秘

2022年10月1日 作者 张舫

更新数据

  • setState()是异步更细数据的
  • 注意:使用该语法时,后面的setState()不要依赖于前面的setState()
  • 当你调用setState()的时候React不会马上修改state而是把这个对象放到一个更新队列里面,稍后才会从队列当中把新的状态提取出来合并到state当中,然后更新出发组件更新
  • 可以调用多次setState,只会触发一次重新渲染

  • 解决多条setState 造成的数据不能连贯问题

 

在状态更新后立即执行某个操作,使用了setState第二个参数

组件更新

1.功能第一

2.性能第二

  • 减轻state:只存跟组件渲染相关的数据 比如列表数据/loading等
  • 不做渲染的数据不要放在state中,比入定时器ID等

  • 对于这种需要在多个方法中用到的数据,应该直接放在this中

避免不必要的重新渲染

  • 组件更新机制:父组件更新会引起子组件也被更新
  • 子组件没有任何变化时也会重新渲染 (接收到的props没有发生任何的改变)
  • +  解决方式:使用钩子函数 shouldComponentUpdate(nextProps, nextState)

使用纯组件