码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • setState是同步更新还是异步更新的


    setState用于变更状态触发组件重新渲染,更新视图UI.不清楚setState什么时候更新,所以难以解释是同步的还是异步的

    只需要说明什么是同步场景什么是异步场景

    首先我们要知道什么是合成事件?

    1.React给document挂上事件监听
    2.DOM事件触发后冒泡到document
    3.React找到对应的组件造出一个合成事件出来
    4.并按组件树模拟一遍事件冒泡

    在这里插入图片描述

    在这里插入图片描述

    调用顺序

    通常我们认为是异步的,React根据队列逐一执行,合并state数据完成后执行回调,根据结果更新虚拟DOM触发渲染.

    为什么设置为异步

    1.保持内部的一致性
    2.为后续的架构升级启用并发更新,根据数据的来源分配不同的优先级,再根据优先级并发处理提升渲染的性能
    3.统一渲染,减少渲染的次数.提升性能

    什么时候优势同步的呢???

    在这里插入图片描述
    正确的应该是输出0和1,为什么???

    因为我们的setState并不是真正的异步函数,是通过队列延迟操作来模拟实现的,通过isBatchUpdate来判断是先存进队列还是同步跟新…值为t则执行异步操作,值为f,则为同步更新

    在外部的原生事件中,并没有外层的封装和拦截,无法更新isBatchUpdate的值,导致值为false.所以我们会立即渲染.

    总结:
    在addEventListener . setTimeout.setlnterval这些原生事件中都会同步更新

    在这里插入图片描述


    大总结:

    在这里插入图片描述

  • 相关阅读:
    前端作业(17)
    ubuntu 创建桌面快捷启动
    源来Intel——开放原子全球峰会
    基于JavaWeb+SpringBoot+Vue超市管理系统的设计和实现
    Mysql高级篇(逻辑架构和存储引擎)
    猿创征文|嵌入式高效开发5款工具推荐!
    FreqBlender: Enhancing DeepFake Detection by Blending Frequency Knowledge
    Java的类与Golang的结构体的区别
    关于canvas的缩放和位移实战的一点点总结
    【花雕动手做】有趣好玩的音乐可视化系列小项目(15)--横排LED方管灯
  • 原文地址:https://blog.csdn.net/qq_52563729/article/details/127795847
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号