头顶黑森林的键盘侠 2021-12-20 10:30 采纳率: 100%
浏览 48
已结题

react setState是同步还是异步的问题

刚学react 看到了setState 看源码看不明白,然后翻博客自己总结了一下,不知道是对是错,帮忙看看总结的有没有问题:
1.setState本身是同步的,
但是在react的环境(合成函数,生命周期)中,表现出来的是异步的
如果在定时器或原生事件中则还是表现为同步

  2.本质是react内部得一个优化
      1.首先先开启isBachingUpdates = true  开启react内部维护的一个队列
      2.同步执行setState,但现在setState执行的结果是向这个队列中添加修改state的对象
      3.等函数或生命周期中的同步任务执行完毕,isBachingUpdates = false关闭队列
       队列会将所有添加进来的对象合并得到最终得修改state的配置对象,然后调用一次setState,
       并传入这个配置对象进行最终的修改
  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 12月28日
    • 创建了问题 12月20日

    悬赏问题

    • ¥20 校园二手交易小程序搭建
    • ¥15 请问在ubuntu用conda创建环境报错怎么能解决
    • ¥15 STM32CubeMX/proteus按键控制指示灯颜色切换
    • ¥20 python,计算区位熵和扩张指数
    • ¥15 Python环境配置
    • ¥15 大四学生的困惑,有偿提问!
    • ¥15 解决页面无法编入索引:被“noindex”标签排除的问题?
    • ¥15 arduino测量电阻
    • ¥15 快手uid转快手号谁能解决 需要开发
    • ¥15 iis部署Django时css不生效,来个真人,ai不好使