美文网首页
18,React中setState 同步异步

18,React中setState 同步异步

作者: r8HZGEmq | 来源:发表于2019-11-19 10:19 被阅读0次

    React 中 setState 什么时候是同步的,什么时候是异步的?

    在React中,如果是由React引发的事件处理(比如通过onClick引发的事件处理),调用setState不会同步更新this.state,
    除此之外的setState调用会同步执行this.state。所谓“除此之外”,指的是绕过React通过addEventListener直接添加的事件处理函数,
    还有通过setTimeout/setInterval产生的异步调用。
    
    **原因:**在React的setState函数实现中,会根据一个变量isBatchingUpdates判断是直接更新this.state还是放到队列中回头再说,
    而isBatchingUpdates默认是false,也就表示setState会同步更新this.state,但是,有一个函数batchedUpdates,
    这个函数会把isBatchingUpdates修改为true,而当React在调用事件处理函数之前就会调用这个batchedUpdates,
    造成的后果,就是由React控制的事件处理过程setState不会同步更新this.state。
    
    
    
    这里所说的同步异步, 并不是真正的同步异步, 它还是同步执行的。
    
    这里的异步指的是多个state会合成到一起进行批量更新。
    

    相关文章

      网友评论

          本文标题:18,React中setState 同步异步

          本文链接:https://www.haomeiwen.com/subject/ykcwictx.html