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;…

【Java基础常见面试题】- Java SE vs Java EE

Java SE vs Java EE Java SE&#xff08;Java Platform&#xff0c;Standard Edition&#xff09;: Java 平台标准版&#xff0c;Java 编程语言的基础&#xff0c;它包含了支持 Java 应用程序开发和运行的核心类库以及虚拟机等核心组件。Java SE 可以用于构建桌面应用程序或简…

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;返…

2.8 假期作业

1.变量的指针&#xff0c;其含义是指该变量的 B 。 A&#xff09;值 B&#xff09;地址 C&#xff09;名 D&#xff09;一个标志 2.已有定义int k2;int *ptr1,*ptr2;且ptr1和ptr2均已指向变量k&#xff0c;下面不能正确执…

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

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

docker挂载数据卷

一、Docker 容器的数据卷 1、什么是数据卷&#xff1f; 数据卷是经过特殊设计的目录&#xff0c;可以绕过联合文件系统&#xff08;UFS&#xff09;&#xff0c;为一个或者多个容器提供访问&#xff0c;数据卷 设计的目的&#xff0c;在于数据的永久存储&#xff0c;它完全独…

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…

MySQL5.7 百万数据迁移到 ElasticSearch7.x

前言 在日常项目开发中,可能会遇到使用 ES 做关键词搜索的场景,但是一般来说业务数据是不会直接通过 CRUD 写进 ES 的。 因为这可能违背了 ES 是用来查询的初衷,数据持久化的事情可以交给数据库来做。那么,这里就有一个显而易见的问题:ES 里的数据从哪里来? 本文介绍的…

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

幻兽帕鲁太火了&#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库驱动函数 普通…

NLP自然语言处理

随着人工智能的飞速发展&#xff0c;自然语言处理&#xff08;Natural Language Processing&#xff0c;简称NLP&#xff09;已经成为了AI领域的一颗璀璨明珠。NLP旨在赋予机器理解和处理人类语言的能力&#xff0c;这不仅仅是一项技术革新&#xff0c;更是一种推动人与机器交流…

一文读懂转融通

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

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

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