hook函数——useState

useState

useState是React中的一个Hook函数,用于在函数组件中添加状态。基本使用语法如下:
const [state, setState] = useState(initialState)

  • state:表示当前状态的值
  • setState:更新状态的函数
  • initialState:初始状态值

本文介绍了number,string,bool,object四种类型的usestate的使用

1.计数器

如果想通过状态模拟一个计数器效果,首先要明确状态的类型为一个number型,并且赋初值可以为0

import React, { useState } from 'react';
import logo from './logo.svg';
import './App.css';function App() {const [count, setcount] = useState(0)return (<div className="App"><div>{count}</div><button onClick={() => setcount(count + 1)}>+1</button></div>);
}export default App;

在控制台查看组件状态,初始时为0,点击执行setcount函数后,count的值加了1,并且组件状态更改为1
在这里插入图片描述
在这里插入图片描述
但是如果在点击函数上添加输出当前的count值,每次点击都只在控制台输出前一次的值,这是因为调用 set 函数 不会 改变已经执行的代码中当前的 state,它只影响下一次渲染中 useState 返回的内容。
在这里插入图片描述

2.更新文本

在原来的基础上添加一个输入框,通过usestate将输入的字符串存入状态

import React, { useState } from 'react';
import logo from './logo.svg';
import './App.css';function App() {const [count, setcount] = useState(0)const [text, settext] = useState('')return (<div className="App"><div>{count},{text}</div><button onClick={() => { setcount(count + 1); console.log(count) }}>+1</button><input value={text} onChange={(e) => settext(e.target.value)}></input></div>);
}export default App;

可以观察到在界面和组件的状态中都有我们输入的内容
在这里插入图片描述

3.复选框

通过给状态变量设置一个初始bool值,点击函数取反存入状态,通过三元运算符渲染语句

import React, { useState } from 'react';
import logo from './logo.svg';
import './App.css';function App() {const [count, setcount] = useState(0)const [text, settext] = useState('')const [check, setcheck] = useState(false)return (<div className="App"><div>{count},{text}</div><button onClick={() => { setcount(count + 1); console.log(count) }}>+1</button><input value={text} onChange={(e) => settext(e.target.value)}></input><label><inputtype="checkbox"checked={check}onChange={() => { setcheck(!check) }}/>我要去金山</label><p>{check ? '一定可以' : '绝对可以'}去金山</p></div>);
}export default App;

同样可以在组件中观测到添加的状态
在这里插入图片描述

4.更新对象

与上面大多相似,知识通过set函数利用展开运算符展开对象,然后通过修改对应属性的值来改变对象

import React, { useState } from 'react';
import logo from './logo.svg';
import './App.css';function App() {const [count, setcount] = useState(0)const [text, settext] = useState('')const [check, setcheck] = useState(false)const [object, setobject] = useState({name: 'zwb',age: '22'})return (<div className="App"><div>{count},{text}</div><button onClick={() => { setcount(count + 1); console.log(count) }}>+1</button><input value={text} onChange={(e) => settext(e.target.value)}></input><label><inputtype="checkbox"checked={check}onChange={() => { setcheck(!check) }}/>我要去金山</label><p>{check ? '一定可以' : '绝对可以'}去金山</p><div>姓名:{object.name},年龄:{object.age}</div><button onClick={() => setobject({ ...object, age: '23' })}>更换对象</button></div>);
}export default App;

点击更新对象后state中的age字段就发生了改变
在这里插入图片描述

总结

以上就是对usestate各种不同类型用法的基本介绍,更多用法可以参考官方文档官方文档

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

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

相关文章

为什么是0.1uF电容?

旁路电容是电子设计中常用的电容器之一&#xff0c;主要用于过滤电源噪声和稳定电源电压。在实际应用中&#xff0c;0.1uF电容器是最常用的旁路电容值之一&#xff0c;那么为什么常用旁路电容是0.1uF而不是其他值&#xff1f;这个值又是怎么来的呢&#xff1f;本文将深入探讨这…

基于微信小程序的校园二手交易平台

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

UDP 用户数据报协议

目录 1 UDP 1.1 UDP 的主要特点 1.1.1 UDP 是面向报文的 1.1.2 UDP 通信和端口号的关系 1.2 UDP 的首部格式 1.2.1 UDP 基于端口的分用 1.3 UDP抓包 1 UDP UDP 只在 IP 的数据报服务之上增加了一些功能&#xff1a; 1.复用和分用 2.差错检测 1.1 UDP 的主要特点 1.无连…

PSM-Net根据Stereo图像生成depth图像

一、新建文件夹 在KITTI数据集下新建depth_0目录 二、激活anaconda环境 conda activate pt14py37三、修改submission.py文件 3.1 KITTI数据集路径 parser.add_argument(--datapath, default/home/njust/KITTI_DataSet/00/, helpselect model)3.2 深度图像输出路径 save…

Vision Pro新机测评!“这才是MR硬件该有的模样!”

期盼很久的Vision Pro终于到了&#xff0c;小编迫不及待地体验了一把&#xff0c;效果相当非常震撼&#xff0c;操作非常丝滑&#xff0c;画面非常清晰…来不急解释了&#xff0c;快和小编一起来看一下吧~ 新机一到公司&#xff0c;为解大家对Vision Pro 的“相思之苦”&#x…

一篇文章理解时间复杂度和空间复杂度

今天也是很开心的学到了数据结构&#xff0c;也是打算把我自己对知识的理解给写出来了。第一篇数据结构开始咯。开始之前我们先理解一个概念。 什么是算法效率&#xff1f; 算法效率是指算法执行的速度或完成任务所需的资源&#xff08;如时间和空间&#xff09;的度量。它通…

Pymysql之Cursor常用API

Cursor常用API 1、cursor.execute(query, argsNone)&#xff1a;执行sql语句。 参数: query (str)&#xff1a;sql语句。 args (tuple, list or dict)&#xff1a;sql语句中如果有变量&#xff0c;或者格式化输出&#xff0c;会在这里填充数据。 Returns&#xff1a;返…

日志报错 git -c dif.mnemonicprefix=false -c core.guotepath=false 解决方法

前言: 在进行下面操作前,必须确保,你是否安装了Git。 查看Git 在命令行窗口中输入`git --version`: 如果这个命令成功显示了Git的版本信息,这表明Git已经被安装。 1. 使用Sourcetree SourceTree 是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端…

react将选中文本自动滑动到容器可视区域内

// 自动滚动到可视区域内useEffect(() > {const target ref;const wrapper wrapperRef?.current;if (target && wrapperRef) {const rect target.getBoundingClientRect();const wrapperRect wrapper.getBoundingClientRect();const isVisible rect.bottom &l…

NLP入门系列—词嵌入 Word embedding

NLP入门系列—词嵌入 Word embedding 2013年&#xff0c;Word2Vec横空出世&#xff0c;自然语言处理领域各项任务效果均得到极大提升。自从Word2Vec这个神奇的算法出世以后&#xff0c;导致了一波嵌入&#xff08;Embedding&#xff09;热&#xff0c;基于句子、文档表达的wor…

幻兽帕鲁服务器全自动部署教程,小白也能轻松上手

幻兽帕鲁太火了&#xff0c;官方palworld服务器不稳定&#xff1f;不如自建服务器&#xff0c;基于腾讯云幻兽帕鲁服务器成本32元全自动部署幻兽帕鲁服务器&#xff0c;超简单有手就行&#xff0c;全程自动化一键部署10秒钟即可搞定&#xff0c;无需玩家手动部署幻兽帕鲁游戏程…

深入探索:缓冲区溢出漏洞及其防范策略

在网络安全的广阔领域中&#xff0c;缓冲区溢出漏洞一直是一个重要的议题。这种漏洞&#xff0c;如果被恶意利用&#xff0c;可能会导致严重的安全问题&#xff0c;包括数据泄露、系统崩溃&#xff0c;甚至可能被攻击者利用来执行恶意代码。在本文中&#xff0c;我们将深入探讨…

【stm32】hal库学习笔记-ADC模数转换(超详细)

【stm32】hal库学习笔记-ADC模数转换&#xff08;超详细&#xff09; 本篇章介绍了ADC实现电压检测的三种方式 ADC原理及选型 ADC将连续的模拟电压信号转换为二进制的数字信号 选型参数 速度&#xff08;采样频率&#xff09; 功耗 精度 转换原理 ADC hal库驱动函数 普通…

一文读懂转融通

最近多家公司都在讲解关于转融通要求。今天我们就来详细聊聊&#xff01; 转融通是一种证券借贷机制&#xff0c;它允许机构投资者在融资融券交易中借入或借出证券。 具体来说&#xff0c;机构投资者可以向券商借入证券&#xff0c;或者将持有的证券借给券商&#xff0c;以扩大…

VScode实现文件、函数自动添加注释说明信息

常规的手动注释费时费力&#xff0c;不方便&#xff0c;拖慢开发进度&#xff0c;甚至影响开发者心情&#xff0c;因此需要实现自动注释&#xff0c;不仅能减少工作量&#xff0c;也能让编写的代码更加的规范整洁&#xff0c;易于理解。 在VScode的插件搜索栏中&#xff0c;查…

STM32学习笔记——看门狗

目录 一、看门狗概述 1、看门狗工作原理 2、独立看门狗IWDG主要性能&#xff1a; 二、看门狗相关寄存器 1、IWDG_KR (Independent Watchdog_Key Register) 关键词寄存器 2、IWDG_PR (Independent Watchdog_Prescaler Register) 预分频寄存器 3、IWDG_RLR (Independent W…

懒人精灵 之 Lua 捕获 json解析异常 ,造成的脚本停止.

Time: 2024年2月8日20:21:17 by:MemoryErHero 1 异常代码 Expected value but found T_END at character 12 异常代码 Expected value but found T_OBJ_END at character 223 处理方案 - 正确 json 示范 while true do--Expected value but found T_END at character 1--Ex…

鄂尔多斯交警推进东康快线“恶劣天气高影响路段优化工程”,全面提升科技赋能实战水平!

2023年5月29日&#xff0c;三部门联合印发《2023年省级恶劣天气高影响路段优化提升气象保障工作方案》&#xff08;以下简称《工作方案》&#xff09;&#xff0c;持续推动恶劣天气交通预警处置试点成果和优化提升工作经验在第二批试点路段上推广应用。 【安装在东康快线上的应…

面向对象的三大特征之一继承

继承 继承的特性 概念&#xff1a;可以使得子类具有父类的属性(成员变量)和方法(成员方法)&#xff0c;还可以在子类中重新定义&#xff0c;追加属性和方法。 继承的格式&#xff1a; public class 子类名 extends 父类名{} 父类&#xff1a;基类、超类 子类&#xff1a;派生…

【Unity】QFramework通用背包系统优化:TipPanel优化

前言 在学习凉鞋老师的课程《QFramework系统设计&#xff1a;通用背包系统》第五章时&#xff0c;笔者对物品提示TipPanel界面进行了一些优化。 优化内容包括&#xff1a; 解决闪烁问题跟随鼠标移动自适应界面大小生成位置优化 效果还是蛮丝滑的&#xff1a; 解决闪烁问题 …