React 中 useState 的 基础使用

news/2025/3/1 14:15:17/

概念:useState 是一个React Hook(函数),它允许我们向组件添加状态变量,从而影响组件的渲染结果。

本质:和普通JS变量不同的是,状态变量一旦发生变化,组件的视图UI也会跟着变化(数据驱动视图)。react没有双向绑定,所以要使用useState,vue可以直接使用变量 就会双向绑定。

javascript">// 用useState给组件添加状态变量,以实现一个计数器按钮
import { useState } from "react";function App() {//第一步,调用useState添加一个状态变量//count是状态变量,setCount是用来修改状态变量的方法,其参数为状态变量的初值const [count, setCount] = useState(0);//第二步,点击事件调用setCount方法//作用:1、用传入的新值修改count 2、重新用新的count渲染UIconst handleClick = () => {setCount(count + 1);};return (<div className="App"><button onClick={handleClick}>{ count }</button></div>);
}export default App;

修改状态的规则

规则:在React中,状态被认为是只读的,我们应该始终替换它而不是修改它,直接修改状态不能引发视图更新。

 修改对象状态

规则:对于对象类型的状态变量,应该始终传给set方法一个全新的对象来进行修改。

javascript">// 用useState给组件添加状态变量,以实现一个计数器按钮
import { useState } from "react";function App() {const [count, setCount] = useState(0);const handleClick = () => {setCount(count + 1);};//修改对象状态const [form, setForm] = useState({name: 'jack'});const changeForm = () => {//setForm()函数会用新对象替换旧对象, 但是这里新对象相对于老对象只是修改了name属性, 其他属性保持不变//...是展开运算符, 用来把form对象的所有键值对展开到新对象中. 然后重新设置了name属性setForm({...form, name: 'rose'});}return (<div className="App"><button onClick={handleClick}>{count}</button><button onClick={changeForm}>修改对象状态 {form.name}</button></div>);
}export default App;


http://www.ppmy.cn/news/1575786.html

相关文章

构建逻辑思维链(CoT)为金融AI消除幻觉(保险赔付篇)

在上一篇文章中&#xff0c;我们介绍了如何利用亚马逊云科技的Amazon Bedrock GuardRails自动推理检查应用于​​​​金融行业中利用AI应用的保险赔付审核场景&#xff0c;提升该场景下审核准确性&#xff0c;消除幻觉。在本案例中&#xff0c;我们将探讨一个利用AI帮助提升保险…

springboot rocketmq配置生产者和消息者

在Spring Boot中集成RocketMQ&#xff0c;你需要进行以下步骤来配置生产者和消费者。下面是一个简化的流程&#xff1a; 1. 添加依赖 首先&#xff0c;在你的pom.xml文件中添加RocketMQ的依赖项。确保你使用的是与Spring Boot兼容的版本。 <dependencies><!-- 其他…

算法日记31:leetcode341整数拆分(DFS->记忆化->DP)

一、题目 二、题解 1、动态规划解题思路&#xff1a; 1、重述问题 2、找到最后一步 3、去掉最后一步&#xff0c;问题变成了什么&#xff1f; 原问题的答案去掉最后一步的问题&#xff1f; 4、考虑边界2、结合题目具体分析&#xff1a; 假设我们拆出了 5 5 5为第k个数 三、…

conda环境管理 kernel注册到jupyter notebook

本文核心目的&#xff1a;解决jupyter notebook找不到自己想要的指定conda环境 首先安装anaconda&#xff0c;在win搜索框打开anaconda prompt 按下ctrlc终止操作的时间很长。需要输入y来确认操作。 国内镜像源不能使用代理服务访问。要尝试代理服务的打开与关闭 下面是cond…

泛微Ecode新增Button调用服务器中的JSP页面里的方法

前言 前端Ecode调用 后端接口编写 JSP文件方法 总结 前言 因为我们是从之前E8版本升级到E9的&#xff0c;所以会有一些接口是通过jsp文件来实现前后端调用的&#xff0c;这里介绍的就是如果你有接口是写在jsp文件里面调用的&#xff0c;但是你又想在Ecode中调用的对应的接…

LInux环境包管理工具和防火墙的配置分析

做为运维工程师&#xff0c;linux环境操作必须是熟练掌握的&#xff0c;操作下载插件之前首先要了解操作系统版本、包管理工具等&#xff0c;然后拿防火墙的配置实战演练。 一、包管理工具 1、linux环境发行版本查看 #操作系统的详细信息 cat /etc/os-release#包含发行版的简…

数论(素数判断;素数筛;最大公约数/最小公倍数;快速幂)

目录 1. 数素数-PAT⼄级1013(素数判断模板) 素数判断模板&#xff1a; 题目来源&#xff1a; 题目内容&#xff1a; 代码实现&#xff1a; 2. 素数个数-洛⾕P3912(素数筛模板) 素数筛模板&#xff08;筛选n以内的素数&#xff09;: 题目来源&#xff1a; 题目内容&…

Spring报错解决一览

Spring错误持续更新贴… 问题一 springcloud-OAuth2.0配置的时候报错 Method springSecurityFilterChain in org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration required a bean of type ‘org.springframework.boot.autoconfigu…