setState包在异步setTimeout里会同步执行
setState 什么时候会执行同步更新?
先直接说结论吧:
在React中,如果是由React引发的事件处理(比如通过onClick引发的事件处理),调用setState不会同步更新this.state,除此之外的setState调用会同步执行this.state。
所谓“除此之外”,指的是绕过React通过addEventListener直接添加的事件处理函数,还有通过setTimeout || setInterval产生的异步调用。
简单一点说, 就是经过React 处理的事件是不会同步更新this.state的。 通过 addEventListener || setTimeout/setInterval 的方式处理的则会同步更新。
具体可以参考 jsBin 的这个例子。
网友评论