hook函数——useState

news2024/11/15 13:55:37

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>
        <input
          type="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>
        <input
          type="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.coloradmin.cn/o/1440311.html

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

相关文章

Java基础(二十四):网络编程

Java基础系列文章 Java基础(一)&#xff1a;语言概述 Java基础(二)&#xff1a;原码、反码、补码及进制之间的运算 Java基础(三)&#xff1a;数据类型与进制 Java基础(四)&#xff1a;逻辑运算符和位运算符 Java基础(五)&#xff1a;流程控制语句 Java基础(六)&#xff1…

[Python] 函数详讲

可莉将这篇博客收录在了&#xff1a;《Python》 可莉推荐的一位优质博主&#xff1a;Keven ’ bloghttp://t.csdnimg.cn/6iwnv 跟着可莉一起学习&#xff0c;一篇文章来带你理解Python中的函数的奥秘~ 一、语法格式 定义函数 def 函数名(形参列表):#函数体return 返回值 调用函…

猫头虎分析:如何利用ChatGPT及生成式AIGC提高工作效率 ‍

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

小区创业项目推荐:小投资大回报的店铺类型

作为一位拥有5年鲜奶吧创业经验的自媒体博主&#xff0c;我深知在小区内寻找一个既小投资又能带来大回报的创业项目是多么重要。今天&#xff0c;我要为大家推荐的&#xff0c;正是这样一个项目——鲜奶吧。 一、鲜奶吧&#xff1a;小区内的健康食品新宠 随着健康饮食观念的深…

【SpringBoot】JWT令牌

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;SpringBoot ⛺️稳重求进&#xff0c;晒太阳 什么是JWT JWT简称JSON Web Token&#xff0c;也就是通过JSON形式作为Web应用的令牌&#xff0c;用于各方面之间安全的将信息作为JSON对象传输…

mac终端怎么恢复初始设置?图文教程不想看看吗?

某网友说“不小心把终端弄成了这样&#xff1f;请问该怎么办呢&#xff1f;mac终端怎么恢复初始设置&#xff1f;” 其实&#xff0c;这个问题不难&#xff0c;在终端中选择【还原初始值】即可。 Mac终端初始化具体怎么操作&#xff1f;话不多说&#xff0c;图文教程分享给大…

10个简单有效的编辑PDF文件工具分享

10个编辑PDF文件工具作为作家、编辑或专业人士&#xff0c;您可能经常发现自己在处理 PDF 文件。无论您是审阅文档、创建报告还是与他人共享工作&#xff0c;拥有一个可靠的 PDF 编辑器供您使用都非常重要。 10个简单适用的编辑PDF文件工具 在本文中&#xff0c;我们将介绍当今…

前端学习之路(6) npm详解

npm 是什么&#xff1f; npm&#xff08;node package manager&#xff09;&#xff1a;node.js 的包管理器&#xff0c;用于node插件管理&#xff08;包括安装、卸载、管理依赖等&#xff09; &#xff0c;npm 是随同 node.js 一起安装的包管理工具&#xff0c;能解决 node.j…

Redis 基本认识

文章目录 Redis八个特性Redis应用场景Redis应用缺陷Redis使用流程 Redis八个特性 速度快 原因: ① 单线程&#xff0c;避免了多线程竞争(如加锁/解锁)的时间开销 ② redis的数据存放在内存中 ③ 使用C语言编写&#xff0c;C语言更方便操做硬件 ④ Redis 源码优秀 利用键值对存…

新手指南:Postman 旧版本(历史版本)下载

随着技术的不断发展&#xff0c;有时候我们发现自己需要退回到使用 Postman 某个以往的版本。这篇文章旨在指导你如何安全地移除当前版本的 Postman、查找并获取旧版本。 从你的系统中移除 Postman 为了确保旧版本的 Postman 可以无障碍地安装&#xff0c;首先得从你的系统中…

嵌入式中经典面试题分析

1.关键字static的作用是什么&#xff1f;为什么static变量只初始化一次&#xff1f; 1&#xff09;修饰局部变量&#xff1a;使得变量变成静态变量&#xff0c;存储在静态区&#xff0c;存储在静态区的数据周期和程序相同&#xff0c; 在main函数开始前初始化&#xff0c;在退…

国产三维剖面仪—MPAS-100相控参量阵浅地层剖面仪

最近声学所东海站邹博士发来了他们最新的浅地层剖面仪—MPAS-100相控参量阵浅地层剖面仪的资料&#xff0c;市场型号GeoInsight&#xff0c;委托Ocean Physics Technology公司销售&#xff0c;地大李师兄的公司负责技术支持。 MPAS-100相控参量阵浅地层剖面仪就是俗称的三维浅…

Unity类银河恶魔城学习记录4-1,4-2 Attack Logic,Collider‘s collision excepetion源代码 P54 p55

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Entity.cs using System.Collections; using System.Collections.Generic; u…

C/C++ - 容器vector

目录 容器特性 构造函数 默认构造函数 填充构造函数 范围构造函数 拷贝构造函数 内存布局 大小函数 size() 函数 capacity() 函数 empty() 函数 resize() 函数 增加函数 push_back(const T& value) emplace_back(Args&&... args) push_back和empla…

linux(redhat)重置root密码

首先将root密码改成几乎不可能记住的密码 [rootexample ~]# echo fheowafuflaeijifehowf|passwd --stdin root Changing password for user root. passwd: all authentication tokens updated successfully.重启系统&#xff0c;进入救援模式 出现此页面&#xff0c;按e键 lin…

一个简单的2024龙年倒计时页面html源码

预览如下 复制粘贴下面的代码&#xff0c;另存为html文件即可打开&#xff0c;文字链接都可以更改&#xff1a; <!doctype html> <html> <head> <meta charset"utf-8"> <title>2024新年倒计时</title> <style>::-webki…

Linux操作系统基础(二):Linux操作系统概述

文章目录 Linux操作系统概述 一、Linux起源 二、Linux 的含义 三、Linux发行版 Linux操作系统概述 一、Linux起源 Linux创始人——林纳斯 托瓦兹 Linux 诞生于1991年&#xff0c;作者上大学期间实现的 Linux的特点&#xff1a;开源、免费、拥有最为庞大的源码贡献者 …

Mac安装Homebrew+MySQL+Redis+Nginx+Tomcat等

Mac安装HomebrewMySQLRedisNginxTomcat等 文章目录 Mac安装HomebrewMySQLRedisNginxTomcat等一、Mac安装Mysql 8①&#xff1a;下载②&#xff1a;安装③&#xff1a;配置环境变量④&#xff1a;外部连接测试 二、Mac安装Redis和可视化工具①&#xff1a;安装Redis01&#xff1…

STL常用容器—set容器

STL常用容器—set容器 1. set容器相关概念2. 初始化容器3. set容器插入和删除4. set容器大小和交换5. set容器的查找和统计6. set、multiset、unordered_set三者的区别7. pair对组的创建8. set容器的排序 参考博文&#xff1a;STL常用容器——set容器的使用 1. set容器相关概念…

SpringSecurity+OAuth2权限管理实战

Spring Security快速入门 官方文档&#xff1a; Spring Security :: Spring Security 功能&#xff1a; 身份认证&#xff08;authentication&#xff09; 授权&#xff08;authorization&#xff09; 防御常见攻击&#xff08;protection against common attacks&#xff…