React setState

news2024/9/21 2:37:38

老生常谈之setState 是同步的还是异步的?

设想setState是同步的,那也就是每次调用setState都要进行新旧虚拟DOM的对比,然后将差异化的dom更新到页面上,性能损耗很大

所以react把setState设置为了异步,当状态更新时不能立即拿到更新后的状态,而是批量进行更新

调用setState之后React都做了什么

首先上图

上图就是setState执行后的react所做的事情

1、enqueueSetState 方法将传入的状态放到组件的状态队列里面

2、enqueueUpdate 来处理将要更新的实例对象

3、enqueueUpdate在处理组件实例时,会先判读啊batchingStrategy对象中isBatchingUpdates是true还是false

4、如果是true,说明组件正在批量更新,任何需要更新的组件需要进入dirtyComponents队列进行等待

5、如果是false,就正常进行批量更新

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1911623.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pdf分割,这几款软件轻松搞定PDF拆分

在数字化办公日益普及的今天,PDF文件因其跨平台、不易修改的特性,成为了我们日常工作中不可或缺的一部分。然而,面对庞大的PDF文件,如何高效、准确地将其分割成多个小文件,以便更好地管理和使用,成为了许多…

utf8mb4和utf8的不同、若依框架,代码生成器,gitee,前端vue的下载、修复和启动(寻求大佬帮助若依框架三、2.3)

2024.7.9 一、数据库的排序和统一问题。utf8mb4和utf8的不同1.1 发现问题1.2 解决问题-在idea中用sql生成器,生成sql语句,然后在里面修改1.3 utf8和utf8mb4的区别 二、若依前后端框架。代码生成器(还没研究懂,但有三个方案&#x…

Java巅峰之路---基础篇---面向对象

目录 面向对象介绍 什么是面向对象编程? 为什么用面向对象编程? 面向对象的重点学习什么? 类和对象 介绍 类的定义 构造方法 作用 格式和特点、执行时机 构造方法注意事项 标准的JavaBean类 定义类的补充注意事项 封装 什么是封…

用Vue3和Plotly.js实现3D小提琴图的交互式可视化

本文由ScriptEcho平台提供技术支持 项目地址:传送门 小提琴图:绘制性别账单分布 应用场景 小提琴图是一种数据可视化工具,用于比较不同组别的分布。它结合了箱线图和核密度估计,可以直观地展示数据的中心趋势、离散度和分布形…

蚂蚁百灵大模型:多模态能力让大模型像人一样理解感知

7月5日,在2024世界人工智能大会“可信大模型助力产业创新发展”论坛上,蚂蚁集团公布其自研百灵大模型最新研发进展:百灵大模型已具备能“看”会“听”、能“说”会“画”的原生多模态能力,可以直接理解并训练音频、视频、图、文等…

【C++】C++入门基础--命名空间,缺省参数,函数重载

文章目录 前言一、C是什么?二、C发展历史C版本更新C参考文档 三、C基本语法1.第一个C程序2.命名空间2.1命名空间的价值2.2命名空间的定义2.3命名空间的使用 3.C的输入与输出4.缺省参数5.函数重载 总结 前言 在编程的浩瀚宇宙中,C犹如一颗璀璨的明星&…

MySQL手注之布尔型盲注详解

布尔型盲注简介 基于布尔型SQL盲注即在SQL注入过程中,应用程序仅仅返回True(页面)和False(页面)。 这时,我们无法根据应用程序的返回页面得到我们需要的数据库信息。但是可以通过构造逻辑判断(…

C++语言学习精简笔记(包含C++20特性)

目录 1 C新语法C与CC编译运行String编程范式C基础类型**自动类型推导**统一对象初始化:Uniform Initialization 控制结构if语句for语句switch语句namespace 2 函数函数声明形式参数函数参数传递的选择函数返回值的选择 函数重载 Lambda表达式函数的定义和申明生存期…

算法之工程化内容(2)—— Git常用命令

目录 1. git初始化配置 2. 新建仓库 3. 工作区——>暂存区——>本地仓库 4. git reset回退版本 5. 查看差异 git diff 6. 删除文件git rm 7. .gitignore 8. vscode操作git 9. git分支、合并和删除 10. 解决合并冲突 11. 回退和rebase 12. 添加远程仓库 参考链接&#xff…

6.824/6.5840 的Debugging by Pretty Printing配置

TA的原文在:Debugging by Pretty Printing (josejg.com) 为了在WSL2中配置好打印运行日志,我可是忙活了一下午。可恶的log配置 首先是安装rich库Textualize/rich: Rich is a Python library for rich text and beautiful formatting in the terminal. …

Android布局简介

布局是一种可用于放置很多控件的容器,根据既定的规则决定内部控件的位置。当然,布局的内部也可以放置布局,即布局嵌套,布局嵌套可以实现一些比较复杂的界面。 Android中有多种编写程序界面的方式可供选择。Android Studio提供了相…

Android应用程序调试Logcat的使用

Android的程序调试主要使用Logcat进行,本节主要介绍Logcat的使用。 开启调试模式 使用Android Studio进行程序调试,首先需要连接虚拟Android设备或真实Android设备,设备上需要启用调试功能。 虚拟Android设备默认情况下会启用调试功能。对…

超详细!Jmeter 压测-设计5W并发量场景

需求:设计一个5W并发量的性能场景? 1、确定性能测试工具,性能测试思路 测试工具:Jmeter 并发设计思路:如果被测服务足够快,比如10ms的响应时间,1个线程/秒就是100tps,5万的TPS&…

Redis代替Session实现共享

集群的session共享问题 session共享问题:多台tomcat并不共享session存储空间,当请求切换到不同的tomcat服务时导致数据丢失的问题。 session的替代方案: 数据共享内存存储key、value结构 将redis替换session可以解决session共享问题

AI发展的新方向:从卷模型到卷应用

在2024年7月4日于上海世博中心举办的世界人工智能大会暨人工智能全球治理高级别会议全体会议上,百度创始人、董事长兼首席执行官李彦宏发表了一段引人深思的演讲。他在产业发展主论坛上提出:“大家不要卷模型,要卷应用!”这句话道…

打卡第7天-----哈希表

继续坚持✊,我现在看到leetcode上的题不再没有思路了,真的是思路决定出路,在做题之前一定要把思路梳理清楚。 一、四数相加 leetcode题目编号:第454题.四数相加II 题目描述: 给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j…

设计模式使用简例(简单工厂+策略模式+模板方法)

直接上代码,方便记忆。主要的要点,已经写到注释中。 一,代码展示 启动类 package com.rojer;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootAppli…

【电路笔记】-C类放大器

C类放大器 文章目录 C类放大器1、概述2、C类放大介绍3、C类放大器的功能4、C 类放大器的效率5、C类放大器的应用:倍频器6、总结1、概述 尽管存在差异,但我们在之前有关 A 类、B 类和 AB 类放大器的文章中已经看到,这三类放大器是线性或部分线性的,因为它们在放大过程中再现…

离线运行Llama3:本地部署终极指南_liama2 本地部署

4月18日,Meta在官方博客官宣了Llama3,标志着人工智能领域迈向了一个重要的飞跃。经过笔者的个人体验,Llama3 8B效果已经超越GPT-3.5,最为重要的是,Llama3是开源的,我们可以自己部署! 本文和大家…

大话光学原理:3.干涉与衍射

一、干涉 这是一束孤独的光,在真空的无垠中悄无声息地穿行。忽然,一堵高耸的墙壁挡住了它的去路,它别无选择,只能硬着头皮冲撞而去。在摸索中,它意外地发现墙壁上竟有两道孔隙,笔直而细长,宛如量…