setState()同步、异步总结
异步的情况:
由React控制的事件处理函数,以及生命周期函数调用setState时表现为异步 。
大部分开发中用到的都是React封装的事件,比如onChange、onClick、onTouchMove等(合成事件中),这些事件处理函数中的setState都是异步处理的。
注:上面的事件都是React合成事件,不是js原生事件。
同步的情况:
React控制之外的事件中调用setState是同步更新的。
比如原生js绑定的事件,setTimeout/setInterval,ajax,promise.then内等 React 无法掌控的 APIs情况下,setState是同步更新state的