React 中 useState 的 基础使用

server/2025/3/5 1:54:25/

概念: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/server/172482.html

相关文章

PyTorch 损失函数解惑:为什么 nn.CrossEntropyLoss 和 nn.BCELoss 的公式看起来一样?

PyTorch 损失函数解惑&#xff1a;为什么 nn.CrossEntropyLoss 和 nn.BCELoss 的公式看起来一样&#xff1f; 在使用 PyTorch 时&#xff0c;我们经常会用到 nn.CrossEntropyLoss&#xff08;交叉熵损失&#xff09;和 nn.BCELoss / nn.BCEWithLogitsLoss&#xff08;二元交叉…

做表格用什么软件?VeryReport让数据管理更高效!

在日常办公和企业管理中&#xff0c;表格软件是必不可少的工具&#xff0c;无论是财务报表、销售数据、库存管理&#xff0c;还是市场分析&#xff0c;都离不开高效的数据处理和可视化展示。那么&#xff0c;做表格用什么软件最好&#xff1f;市面上有Excel、WPS、Google Sheet…

QT-信号与槽

1.在注册登录的练习里面&#xff0c;追加一个QListWidget项目列表 要求:点击注册之后&#xff0c;将账号显示到列表窗口小部件上面去 以及&#xff0c;在列表窗口小部件中双击某个账号的时候&#xff0c;将该账号删除 头文件 #ifndef WIDGET_H #define WIDGET_H #include <…

Redis---LRU原理与算法实现

文章目录 LRU概念理解LRU原理基于HashMap和双向链表实现LRURedis中的LRU的实现LRU时钟淘汰策略近似LRU的实现LRU算法的优化 Redis LRU的核心代码逻辑Redis LRU的核心代码逻辑Redis LRU的配置参数Redis LRU的优缺点Redis LRU的优缺点 LRU概念理解 LRU&#xff08;Least Recentl…

构建私有化AI知识库:基于CentOS的Ollama + DeepSeek-R1 +ragflow 整合部署教程

操作系统&#xff1a;CentOS 7.9 CPU&#xff1a;支持 AVX 指令集的 x86_64 处理器 内存&#xff1a;64GB 存储&#xff1a;SSD 1TB 以上 GPU&#xff08;可选&#xff09; 一、组件介绍 Ollama Ollama 是一个专为在本地机器上部署和运行大型语言模型&#xff08;LLM&a…

Spring学习笔记03——Spring Boot的文件结构

Spring boot常见的文件结构&#xff1a; src/ ├── main/ │ ├── java/ │ │ └── com.example.demo/ │ │ ├── DemoApplication.java # 主入口 │ │ ├── config/ # 配置类 │ │ ├── controller/ …

Switch开关的防抖监听器

一、这代码到底解决了什么问题&#xff1f;&#xff08;先唠点实在的&#xff09; 作为一个在安卓坑里摸爬滚打多年的老码农&#xff0c;肯定都遇到过这种场景&#xff1a;用户疯狂点击Switch开关&#xff0c;结果触发一堆重复回调。这种防抖需求就跟吃饭喝水一样常见。传统实…

腾讯云对象存储服务(COS)

腾讯云对象存储服务&#xff08;COS&#xff09; 安全、可扩展、低成本的云存储解决方案 腾讯云 对象存储服务&#xff08;COS&#xff0c;Cloud Object Storage&#xff09; 是一种高可靠、高性能、可扩展的云存储服务&#xff0c;专为海量非结构化数据&#xff08;如图片、…