React setState 方法

2019-03-31

setState机制

React通过this.state来访问state,通过this.setState()来设置state并触发re-render。除了自定义组件的constructor方法,任何地方都不能直接通过this.state去设置属性。setState也能传入一个回调函数,通知setState完成。

React.Component.prototype.setState 
  = function(partialState:Object, callback:function)

setState异步更新

setState通过一个队列机制实现state更新,而不是直接去写state。更新队列会将需要更新的state合并,并触发异步更新方法enqueueUpdate()。所以如果直接通过this.state去更新组件,那么就不会调用到真正的更新方法,就不会完成re-render的需求。

批量更新

事务是state实现批量更新的方法,在一个事物中的setState会在事务结束时进行合并批量更新,允许使用setState的生命周期方法基本上都是一个事务,所以都能合并更新提高性能。但React的设计不建议自建事务。