当前位置: 首页 > news >正文

6. React useState基础使用:useState修改状态的规则;useState修改对象状态的规则

6. useState基础使用:useState修改状态的规则;useState修改对象状态的规则

  • useState基础使用
  • useState修改状态的规则
  • useState修改对象状态的规则

useState基础使用

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

本质:和普通JS变量不同的是,状态变量一旦发生变化组件的视图Ul也会跟着变化(数据驱动视图)

  1. useState是一个函数,返回值是一个数组
  2. 数组中的第一个参数是状态变量,第二个参数是set函数用来修改状态变量
  3. useState的参数将作为count的初始值

完整代码如下

// useState 实现一个计数器按钮
import { useState } from 'react';function App4() {// 1. 调用 useState 添加一个状态变量// count 是状态变量,初始值为0// setCount 是修改状态变量的方法const [count, setCount] = useState(0);// 2. 点击事件回调:创建一个按钮,点击按钮时调用setCount方法,将count值加1const handleClick = () => {// 作用:// 1. 修改状态变量的值// 2. 触发组件重新渲染,显示最新的状态变量值setCount(count + 1);};return (<div className="App">这是 App4.js<br/><button onClick={handleClick}>{count}</button></div>);
}export default App4;

在这里插入图片描述

useState修改状态的规则

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

完整代码如下

// useState 实现一个计数器按钮
import { useState } from 'react';function App4() {let [count, setCount] = useState(0);const handleClick = () => {// 直接修改count值,不会触发组件重新渲染count++;console.log(count);// setCount(count);};return (<div className="App">这是 App4.js<br/><button onClick={handleClick}>{count}</button></div>);
}export default App4;

在这里插入图片描述

useState修改对象状态的规则

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

完整代码如下

// useState 实现一个计数器按钮
import { useState } from 'react';function App4() {let [count, setCount] = useState(0);const handleClick = () => {// 直接修改count值,不会触发组件重新渲染// count++;// console.log(count);setCount(count);};// 修改对象状态const [obj, setObj] = useState({name: '张三'});const changeObj = () => {// 错误写法:直接修改// obj.name = '张三1';// 正确写法:创建新的对象setObj({...obj,name: '张三1'});};return (<div className="App">这是 App4.js<br/><button onClick={handleClick}>{count}</button><br/><button onClick={changeObj}>{obj.name}</button><br/></div>);
}export default App4;
http://www.dtcms.com/a/465062.html

相关文章:

  • 凡科做的网站怎么打不开了天津做再生资源交易的网站
  • AWS Shield 与海外高防服务器的对比分析
  • CTF攻防世界WEB精选基础入门:cookie
  • Vue 中 props 传递数据的坑
  • Descheduler for Kubernetes(K8s 重调度器)
  • Embedding(嵌入):让机器理解世界的通用语言
  • sql练习题单-知识点总结
  • 网站空间域名续费湖南送变电建设公司 网站
  • 国产化PDF处理控件Spire.PDF教程:C#中轻松修改 PDF 文档内容
  • 文件预览(pdf、docx、xlsx)
  • AutoCAD如何将指定窗口导出成PDF?
  • 测试DuckDB电子表格读取插件rusty_sheet 0.2版
  • 用「心率」重塑极限,以「中国精度」见证热爱——宜准产品体验官于淼成功挑战北京七环
  • 18003.TwinCat3配置LAN9253从站XML文件(Ethercat)- 示例(一)
  • 解锁特征工程:机器学习的秘密武器
  • 南昌企业网站开发公司hao123网址导航
  • 中山市有什么网站推广长臂挖机出租东莞网站建设
  • 网站建设多少钱一个月青岛网站公司哪家好
  • PowerBI一直在为个人版用户赋能,QuickBI目前正在拥抱个人版用户,FineBI正在抛弃个人版用户
  • 做网站和平台多少钱dedecms 网站地图 插件
  • 在 C# 中显示或隐藏 PDF 图层
  • 货车智能化配置手机控车远程启动一键启动无钥匙进入
  • Unity 项目外部浏览并读取PDF文件在RawImage中显示,使用PDFRender插件
  • 网站规划与建设评分标准昆明的互联网公司有哪些
  • 免费网站登录口看完你会感谢我wordpress能承载多少数据库
  • PostgreSQL选Join策略有啥小九九?Nested Loop/Merge/Hash谁是它的菜?
  • 数据链路层协议之RSTP协议
  • 让AI说“人话“:TypeChat.NET如何用强类型驯服大语言模型的“野性“
  • .pth文件
  • 北京网站建设销售招聘宣传式网站