8.26react的setState
1.更新状态需要用this.setState()方法,该方法接受两种参数:对象或函数
(1)大多数情况是对象:即想要修改的state.
2.在更新的过程内部执行过程,更新state,创建新的ui,再经过diff算法对比差异,决定渲染哪一部分,最终形成新的UI,这一过程包含组件的四个生命周期函数。
(1)shouleComponentUpdate
(2)componentWillUpdate
(3)render
(4)componentDidUpdate
注:如果子组件的数据依赖于父组件,还会执行一个 钩子函数componentWillReceiveProps。
3.何时异步:
由React控制的事件处理程序,以及生命周期函数调用setState不会同步更新state 。例如react封装的事件,比如onChange、onClick等。
4.何为同步
react控制之外的事件中调用setstate是同步更新,比如原声js绑定事件,setTimeout、setInterval
5.react是怎样控制同步异步?
简而言之:
React 在调用事件处理函数之前就会先调用这个 batchedUpdates将isBatchingUpdates修改为true,这样由 React 控制的事件处理过程 setState 不会同步更新 this.state。
参考文章:https://www.jianshu.com/p/799b8a14ef96