当前位置: 首页 > news >正文

React 中 useState 语法详解

 1. 语法定义

const [state, dispatch] = useState(initData)

state:定义的数据源,可视作一个函数组件内部的变量,但只在首次渲染被创造。

dispatch:改变state的函数,推动函数渲染的渲染函数,有非函数和函数两种情况。

initData:state的初始值,有非函数和函数两种情况。

2. 使用案例

1. 变量的定义和修改

import { useState } from 'react'// 定义变量
const [name, setName] = useState('Vue')// 修改变量
const handleUpdate = () => {setName('React')
}

2. 对象的定义和修改

import { useState } from 'react'// 定义对象
const [user, setUser] = useState({ name: '张三', age: 30 })// 修改对象
const handleUser = () => {// setUser({ name: '李四', age: 50 })setUser({ ...user, age: 50 })
}

3. 数组的定义和修改

import { useState } from 'react'// 定义数组
const [list, setList] = useState(['Tom', 'Jack']);// 修改数组
const handleList = () => {setList([...list, 'Lily'])
}

4. 声明时添加逻辑返回

import { useState } from 'react'const num = 1;// 声明通过函数返回
const [name ,setName] = useState(()=>{if(num==1){return "这是单数"}else{return "这是双数"}
})

5. 更新时添加逻辑返回


import { useState } from 'react'// 定义变量
const [count, setCount] = useState(0);// 修改变量
const handleCount = () => {// 通过函数返回setCount((count) => count + 1)}

3. 异步更新

React是异步更新,它会将多次更新合并到一起。

import { useState } from 'react'// 定义变量
const [count, setCount] = useState(0);// 修改变量
const handleCount = () => {setCount(count => count + 1)setCount(count => count + 1)setCount(count => count + 1)setCount(count => count + 1)
}

由于React是异步合并更新,上面调用了4次setCount会统一合并,值会变为4,但只会渲染一次。

如果想要强制刷新渲染,可以使用flushSync函数提高优级,这样就会又渲染一次。

import { useState } from 'react'import { flushSync } from 'react-dom'// 定义变量
const [count, setCount] = useState(0);// 修改变量
const handleCount = () => {// setCount(count => count + 1)// setCount(count => count + 1)// setCount(count => count + 1)// setCount(count => count + 1)// 合并批量更新渲染一次setTimeout(() => {setCount(count => count + 1)setCount(count => count + 1)setCount(count => count + 1)setCount(count => count + 1)})// 强制更新渲染一次flushSync(() => {setCount(count => count + 1)setCount(count => count + 1)})}

相关文章:

React 中 useState 语法详解

1. 语法定义 const [state, dispatch] useState(initData) state:定义的数据源,可视作一个函数组件内部的变量,但只在首次渲染被创造。 dispatch:改变state的函数,推动函数渲染的渲染函数,有非函数和函…...

(面试必看!)一些和多线程相关的面试考点

文章导读 引言考点1. CAS 指令(重点)一、什么是CAS二、CAS 的优点三、CAS 的缺点四、ABA问题五、相关面试题 考点2. 信号量(semaphore)一、基本概念二、信号量的主要操作三、信号量的应用四、相关面试题 考点3、CountDownLatch 类…...

从零到一使用 Ollama、Dify 和 Docker 构建 Llama 3.1 模型服务

本篇文章聊聊,如何使用 Ollama、Dify 和 Docker 来完成本地 Llama 3.1 模型服务的搭建。 如果你需要将 Ollama 官方不支持的模型运行起来,或者将新版本 llama.cpp 转换的模型运行起来,并且想更轻松的使用 Dify 构建 AI 应用,那么…...

【React】详解 React Router

文章目录 一、React Router 的基本概念1. 什么是 React Router?2. React Router 的主要特性 二、React Router 的核心组件1. BrowserRouter2. Route3. Link4. Switch 三、React Router 的使用方法1. 安装 React Router2. 定义路由组件3. 配置路由4. 启动应用 四、Re…...

微软蓝屏”事件暴露了网络安全哪些问题?

📢博客主页:https://blog.csdn.net/2301_779549673 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 JohnKi 原创,首发于 CSDN🙉 📢未来很长&#…...

upload-labs靶场练习

文件上传函数的常见函数: 在PHP中,‌文件上传涉及的主要函数包括move_uploaded_file(), is_uploaded_file(), get_file_extension(), 和 mkdir()。‌这些函数共同协作,‌使得用户可以通过HTTP POST方法上传文件,‌并在服务器上保存…...

java使用hutool工具判断ip或者域名是否可用,java使用ping判断ip或者域名是否可用

1.导入hutool工具 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.16</version></dependency>2.复制以下代码直接运行 import cn.hutool.core.net.NetUtil;public class Test {p…...

apache2和httpd web服务器

apache2和httpd web服务器 apache2和httpd web服务器是啥apache是软件基金会apache2是一个web服务httpd和apache2是同一个东西&#xff0c;但是不同linux发行版中叫法不一样。就是同一个东西&#xff0c;但是看上去有一些不一样。 apache2和httpd web服务器是啥 apache是软件基…...

基于多种机器学习的豆瓣电影评分预测与多维度可视化【可加系统】

有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主 在本研究中&#xff0c;我们采用Python编程语言&#xff0c;利用爬虫技术实时获取豆瓣电影最新数据。通过分析豆瓣网站的结构&#xff0c;我们设计了一套有效的策略来爬取电影相关的JSON格式数据。…...

Linux系统配置STM32的开发环境(代码编辑,编译,下载调试)

常见的stm32开发都是直接使用keil-MDK工具的&#xff0c;这是个集成开发环境&#xff0c;包含了代码编辑&#xff0c;编译&#xff0c;下载&#xff0c;调试&#xff0c;等功能&#xff0c;而且keil还是个图形化操作工具&#xff0c;直接可以点击图标案件就可以实现编译下载啥的…...

每日一题——第三十五题

题目&#xff1a;有一个文本文件numbers.txt&#xff0c;其中有20个整数&#xff0c;每个整数占一行&#xff0c;编写程序将这些整数从小到大顺序排好后&#xff0c;重新写入到该文件中&#xff0c; 要求排序前和排序后都要输出该文件的内容。 #include<stdio.h> #inclu…...

Echarts 柱状图实现同时显示百分比+原始值+汇总值

原始效果&#xff1a;柱状图 二开效果&#xff1a; 核心逻辑 同时显示百分比和原始值 label: {show: true,position: inside,formatter: (params) > {const rawValue rawData[params.seriesIndex][params.dataIndex];const percentage Math.round(params.value * 1000) / …...

嵌入式学习Day13---C语言提升

目录 一、二级指针 1.1.什么是二级指针 2.2.使用情况 2.3.二级指针与数组指针 二、指针函数 2.1.含义 2.2.格式 2.3.注意 2.4.练习 三、函数指针 3.1.含义 3.2.格式 3.3.存储 3.4.练习 ​编辑 四、void*指针 4.1.void缺省类型 4.2.void* 4.3.格式 4.4.注…...

Mysql随记

1.对表mysql.user执行DML语句&#xff08;数据操作语言&#xff09;&#xff0c;那么此时磁盘数据较新&#xff0c;需要手动执行flush privileges 语句来覆盖内存中的授权数据。其他的DDL&#xff08;数据操作语言&#xff09;,DQL&#xff08;数据查询语言&#xff09;,DCL(数…...

wire和reg的区别

在 Verilog 中&#xff0c;wire 和 reg 是两种不同的数据类型&#xff0c;用于表示信号或变量。它们在 Verilog 中的使用场景和行为有一些区别&#xff1a; ### wire&#xff1a; - wire 类型用于连接组合逻辑电路中的信号&#xff0c;表示电路中的连线或信号传输线。 - wire …...

c语言第四天笔记

关于 混合操作&#xff0c;不同计算结果推理 第一种编译结果&#xff1a; int i 5; int sum (i) (i) 6 7 13 第二种编译结果&#xff1a; int i 5; int sum (i) (i) 6 7 7 7 前面的7是因为后面i的变化被影响后&#xff0c;重新赋值 14 第一种编译结果&#xff…...

Hive——UDF函数:高德地图API逆地理编码,实现离线解析经纬度转换省市区(离线地址库,非调用高德API)

文章目录 1. 需求背景数据现状业务需求面临技术问题寻求其他方案 2. 运行环境软件版本Maven依赖 3. 获取离线地址库4. Hive UDF函数实现5. 创建Hive UDF函数6. 参考 1. 需求背景 数据现状 目前业务系统某数据库表中记录了约3亿条用户行为数据&#xff0c;其中两列记录了用户触…...

深入解析PHP框架:Symfony框架的魅力与优势

嘿&#xff0c;PHP开发者们&#xff01;今天我们要聊一聊PHP世界中的一颗闪亮明星——Symfony框架。无论是初学者还是经验丰富的开发者&#xff0c;Symfony都为大家提供了强大的工具和灵活的特性。那就跟着我一起&#xff0c;来探索这个强大的PHP框架吧&#xff01; 一、什么是…...

Go语言实战:基于Go1.19的站点模板爬虫技术解析与应用

一、引言 1.1 爬虫技术的背景与意义 在互联网高速发展的时代&#xff0c;数据已经成为新的石油&#xff0c;而爬虫技术则是获取这种“石油”的重要工具。爬虫&#xff0c;又称网络蜘蛛、网络机器人&#xff0c;是一种自动化获取网络上信息的程序。它广泛应用于搜索引擎、数据分…...

5个ArcGIS图源分享

数据是GIS的血液。 我们在《15个在线地图瓦片URL分享》一文中为你分享了15个地图瓦片URL链接&#xff0c;现在再为你分享5个能做ArcGIS中直接加载的图源&#xff01; 并提供了能直接在ArcMAP和ArcGIS Pro的文件&#xff0c;如果你需要这些ArcGIS图源&#xff0c;请在文末查看…...

Qwen3-0.6B-FP8部署详解:如何用16GB显存跑通FP8量化版Qwen3轻量推理

Qwen3-0.6B-FP8部署详解&#xff1a;如何用16GB显存跑通FP8量化版Qwen3轻量推理 想体验最新的大语言模型&#xff0c;但被动辄几十GB的显存需求劝退&#xff1f;今天&#xff0c;我们来解决这个痛点。 Qwen3系列模型以其强大的推理和对话能力备受关注&#xff0c;但其标准版本…...

MoMask:文本驱动3D运动生成技术全解析

MoMask&#xff1a;文本驱动3D运动生成技术全解析 【免费下载链接】momask-codes Official implementation of "MoMask: Generative Masked Modeling of 3D Human Motions (CVPR2024)" 项目地址: https://gitcode.com/gh_mirrors/mo/momask-codes 价值定位&am…...

WordPress建站避坑指南:Ubuntu服务器常见权限问题与安全配置

WordPress建站避坑指南&#xff1a;Ubuntu服务器常见权限问题与安全配置 引言&#xff1a;为什么你的WordPress网站总出问题&#xff1f; 每次看到新手开发者兴奋地宣布"我的WordPress网站上线了"&#xff0c;我都忍不住想问&#xff1a;你真的检查过文件权限了吗&am…...

AgentCPM深度研报助手C语言文件操作实战:批量处理本地研报文本文件

AgentCPM深度研报助手C语言文件操作实战&#xff1a;批量处理本地研报文本文件 你是不是也遇到过这样的场景&#xff1f;手头有一堆下载好的行业研报&#xff0c;有PDF&#xff0c;有TXT&#xff0c;堆在文件夹里。想快速了解每份报告的核心观点&#xff0c;但一份份打开看&am…...

vue3-count-to避坑指南:数字增长动画的7个常见问题与解决方案

Vue3-Count-To深度避坑实战&#xff1a;数字动画7大疑难解析 数字动态增长效果在数据可视化、金融仪表盘和运营数据展示中扮演着关键角色。vue3-count-to作为Vue3生态中专精于此的轻量级库&#xff0c;虽然API简洁&#xff0c;但在真实业务场景中往往会遇到各种边界情况。本文将…...

Redis 集群模式:核心问题与深度运维指南

前言&#xff1a;为什么要写这篇笔记&#xff1f;在最近的一次技术面试中&#xff0c;面试官问到了“Redis 集群模式下的常见问题及解决方案”。坦白说&#xff0c;虽然我在项目中一直使用 Redis&#xff0c;但由于现有的业务规模尚未达到触发集群极端瓶颈的程度&#xff0c;导…...

从‘瓦特’到‘分贝瓦’:一个公式讲透无线通信中的功率与信噪比换算

从‘瓦特’到‘分贝瓦’&#xff1a;无线通信中的功率与信噪比实战指南 在无线通信系统设计中&#xff0c;功率与信噪比的换算如同工程师的"货币兑换"——你需要熟练掌握瓦特&#xff08;W&#xff09;、分贝瓦&#xff08;dBW&#xff09;、分贝毫瓦&#xff08;dB…...

PP实战指南:ECN工程变更在物料计划中的关键应用与系统操作解析

1. ECN工程变更的核心价值与业务场景 第一次接触ECN&#xff08;Engineering Change Notice&#xff09;是在2015年负责汽车零部件项目时&#xff0c;当时产线因为一个螺丝规格变更导致全线停产8小时。这个惨痛教训让我深刻理解到&#xff0c;工程变更绝不是简单的技术文档更新…...

CANdb++ Editor高效使用技巧:5个隐藏功能大幅提升dbc编辑效率

CANdb Editor高效使用技巧&#xff1a;5个隐藏功能大幅提升dbc编辑效率 在汽车电子开发领域&#xff0c;Vector的CANdb Editor堪称dbc文件编辑的行业标准工具。大多数工程师都能熟练使用其基础功能&#xff0c;但真正的高手往往掌握着那些鲜为人知的"秘密武器"。本文…...

AT32F435_437_USB_MSC_SDIO:实现高效SD卡U盘功能的开发指南

1. 从零开始&#xff1a;AT32F435/437的USB MSC功能初探 第一次接触AT32F435/437的USB大容量存储设备(MSC)功能时&#xff0c;我完全被它的实用性惊艳到了。想象一下&#xff0c;你的嵌入式设备突然变身成电脑上的U盘&#xff0c;可以直接拖拽文件读写SD卡&#xff0c;这对数据…...