react|useState的异步渲染

news2024/11/15 6:54:05

useState

  • 组件里面的变量可以用state来表示,setState函数是用来更新state的值的
  • 用法
let [age,setAge]=useState(0); // 0是变量age的初始值

异步渲染

  • setState是异步指定的。也就是setAge是异步执行的。
  • 执行但不是立刻渲染,而是进入到微任务队列。注意分清执行和渲染是两回事。
    在这里插入图片描述
function App() {
    let [age, setAge] = useState(0);
    useEffect(()=>{
        console.log("use effect:", age);
    })
    let addAge = () => {
        setTimeout(()=>{
            console.log("i am macro task");
        },)
        Promise.resolve().then(()=>{
            console.log("i am micro task ");
        })
        setAge(()=>{
            console.log("where am i ");
            return 10;
        });
        console.log("main task");
    };
    return (
        <div>
            i am {age} years old
            <button onClick={addAge}>add </button>
        </div>

    );
}

export default App;

在这里插入图片描述

分析代码和输出

点击按钮,触发addAge函数。

  • setTimout进入宏任务队列,then进入微任务队列,setAge异步执行,返回10,也就是告诉react,下次把age渲染成10,所以如果在console.log(“main task”)上加一行,console.log(age),输出的还是10。
  • 从useEffect的输出顺序来看,大胆猜测react的渲染事件就是进入的微任务队列。因为,use effect:10 在”macro task“ 前输出。

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

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

相关文章

数值分析笔记(六)非线性方程求根

非线性方程求根 二分法 二分法是线性收敛的。 不动点 对于非线性方程 f ( x ) 0 f(x)0 f(x)0&#xff0c;将其转化为 x φ ( x ) x\varphi(x) xφ(x)&#xff0c;若 x ∗ x^* x∗满足 f ( x ∗ ) 0 f(x^*)0 f(x∗)0&#xff0c;称 x ∗ x^* x∗为 φ ( x ) \varphi(x) φ…

基于ASO-BP原子探索优化BP神经网络实现数据预测Python实现

本文提出了一种基于ASO算法优化BP神经网络的数据预测方法。通过ASO算法对BP神经网络的权值和阈值进行优化&#xff0c;克服了BP神经网络易陷入局部最优解和对初始权值敏感的缺点。实验结果表明&#xff0c;优化后的BP神经网络在预测精度上得到了显著提升&#xff0c;为数据预测…

【数学建模学习手册】python基本入门使用

本专栏内容为&#xff1a;数学建模原理 记录学习数学建模 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;数学建模 &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库&#x1f69a; &#x1f339;&#x1f339;&#x1f339;关注我带你学…

【三维重建】三角网格中轴骨架线提取

三维网格中轴线提取 方法介绍实现提取 三维网格中轴线提取是计算机图形学和三维建模领域中的一个重要技术&#xff0c;它对于理解三维形状的拓扑结构和几何特性具有重要意义。 方法介绍 以下是几种常见的三维网格中轴线提取方法&#xff1a; 基于距离变换的方法 基本原理&…

海康二次开发笔记10-独立Group导入、导出及执行

独立Group导入、导出及执行 1. 界面设计 2. 添加引用 Group相当于VM中的模块,因此在调用相关接口函数前,需要引用对应的动态库IMVSGroupCs,同时将复制本地的属性改为False using IMVSGroupCs;3. 添加VmSingleModuleSetConfigControl控件 拖入控件后,设置Dock为Fill 4. 选择G…

算法的学习笔记—把数字翻译成字符串

&#x1f600;前言 在日常生活中&#xff0c;我们经常会遇到各种编码和解码的问题。今天&#xff0c;我们将讨论一个有趣的问题&#xff1a;如何将一串数字翻译成字母&#xff0c;并计算出有多少种不同的翻译方法。 &#x1f3e0;个人主页&#xff1a;尘觉主页 文章目录 &#…

虚拟化设置和虚拟机相关的环境搭建

目录 0.首先声明 1.背景知识 ​编辑 2.虚拟化设置 3.安装vm15.5过程 4.安装虚拟系统 4.1下载centos7.6 4.2安装centos7.6 5.我的总结 6.我的体会 0.首先声明 我的这个教程参考的就是韩顺平老师的这个linux学习教程&#xff0c;但是这个韩老师的这个教程就是2020年的教…

算法如何应用,思路都在这

目录 01 问题定义 02 问题建模 03 特征工程 04 模型选择 05 模型融合 本文深入探讨了算法在不同领域的应用方法和背后的思考逻辑。作者夏师傅通过丰富的案例分析&#xff0c;揭示了算法如何助力产品决策、优化业务流程&#xff0c;并提供了实用的策略和技巧。无论您是技术专家还…

2024 年 Web 开发者必备的 30 款 CSS 工具

2024 年 Web 开发者必备的 30 款 CSS 工具 | 瑆箫博客 找到合适的 CSS 工具可能需要花费不少时间&#xff0c;但是这份 2024 年最棒的 30 款 CSS 工具清单&#xff0c;可以让你的选择变得轻松许多。无论你的 CSS 技能水平如何&#xff0c;这份清单都能提供调试、优化代码和提升…

Bazel 快速入门与核心知识

Bazel 快速入门与核心知识 Bazel 简介 Bazel 是一款与 Make、Maven 和 Gradle 类似的开源构建和测试工具。 它使用人类可读的高级构建语言。Bazel 支持多种语言的项目 (C/C, Java, Python, …)&#xff0c;可为多个平台构建输出。Bazel 支持跨多个代码库和大量用户的大型代码…

2024怎么选蓝牙耳机性价比品牌?四款小白必看优选王炸机型推荐!

如今国人对蓝牙耳机的选择日益重视&#xff0c;蓝牙耳机作为智能的手机备件&#xff0c;普及率也是一升再升&#xff0c;但市面上很多品牌虽然宣传自己音质好和佩戴感舒适&#xff0c;其实性能不佳&#xff0c;那么2024怎么选蓝牙耳机性价比品牌&#xff1f;身为资深的蓝牙耳机…

复变函数在大模型中的应用

1. 导入 说来惭愧&#xff0c;我研究生时的研究方向是复分析&#xff0c;但毕业近十年来几乎没用到它。 我还记得实习时做自我介绍时&#xff0c;我说我的研究方向是复分析。面试官不太了解&#xff0c;我便解释说&#xff0c;这是关于对 -1 开平方得到的虚数 i 的研究。 在…

信号的捕捉

1.信号的产生 信号递达:实际执行信号的处理动作称为信号的递达 信号未决:信号从产生到递达之间的状态 进程可以阻塞某个信号 被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作 注意,忽略和阻塞是不同的,只要信号阻塞就不会被递达,而忽略是递达…

【Apache Doris】数据均衡问题排查指南

原文阅读&#xff1a;【巨人肩膀社区博客分享】【Apache Doris】数据均衡问题排查指南 一、前提概要 当集群处于以下几种情况时&#xff0c;可参考本文进行问题排查。 •BE节点之间的数据不均 •单个BE节点上的多个磁盘之间的数据不均 •BE节点的上线和下线进度卡死&#…

《高等代数》两条线行列式

说明&#xff1a;此文章用于本人复习巩固&#xff0c;如果也能帮助到大家那就更加有意义了。 注&#xff1a;两条线行列式的固定做法为按照第一列展开。

Kafka分布式集群部署实战:跨越理论,直击生产环境部署难题与解决方案,性能调优、监控与管理策略大揭秘,轻松上手分布式消息中间件

本文介绍kafka的集群如何部署和安装&#xff0c;1-4章理论知识&#xff0c;第5章详解集群的部署&#xff0c;部署Kafka之前需要先部署好分布式的Zookeeper&#xff0c;不喜欢理论的可以直接看第5章&#xff0c;欢迎大家一起探讨技术&#xff01; Zookeeper集群部署参考文章&…

VUE-组件间通信(三)全局事件总线

一、作用&#xff1a;任意组件间通信 二、实现 1、创建全局事件总线 new Vue({render: h > h(App),beforeCreate(){//创建全局事件总线Vue.prototype.$busthis} }).$mount(#app) 2、学生组件 触发事件 <template><div class"studentInfo"><h…

(备份)常用ASCII 8*8 点阵 以及查询显示字符的点阵

图片 #include "driver/spi_master.h" #include "driver/gpio.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "string.h" #include "driver/i2c.h" #include "esp_rom_sys.h"…

【postman如何生成python代码】

postman如何生成python代码 https://jingyan.baidu.com/article/86fae3461577c27d48121ad1.html

【大模型系列篇】词向量 - 从Word2Vec到ELMo

&#x1f525;&#x1f525;&#x1f525;首先安利一个比较不错的忍不住就想一键三连的大模型科普: 大模型科普专栏 - AI老兵文哲&#xff08;哔哩哔哩&#xff09; 词向量&#xff08;又叫词嵌入&#xff09;已经成为NLP领域各种任务的必备一步&#xff0c;而且随着BERT、GPT等…