前端基础之《React(11)—state声明式》
一、如何定义state1、在类组件中在constructor()构造函数中使用this.state{}来定义2、在函数式组件中自React16.8以后可以使用useState()来定义二、如何使用state1、在类组件中通过this.state来访问声明式变量import { Component } from react; class A extends Component { constructor(props) { super(props); // 调用父类的构造函数 // 定义state this.state { num: 1, }; } // 类组件一定要有render方法因为render返回值就是组件的DOM结构 render() { // 建议在类组件中解构state const { num } this.state; return ( div h1类组件/h1 h1{ num }/h1 /div ); } } export default A;2、在函数式组件中直接访问useState的结果三、如何正确地修改state声明式变量1、在类组件中使用专属方法this.setState()来修改2、在函数式组件中使用useState()返回值的第二个参数来修改3、this.setState两种写法1this.setState({})对象语法2this.setState((state,props){}) 回调函数语法3例子// 自定义方法 add () { // 这种写法是没问题的但不够优雅。因为你要修改的state新值是由旧值计算而来的 // 所以建议使用函数式写法this.setState((state,props){}) // 用旧值state参与运算得到新值 this.setState({ num: this.state.num 1, }); }4、this.setState是异步的所以有第二个参数callback表示声明式变量修改已完成this.setState({}, callback)this.setState((state,props)({}, callback))四、关于this.setState()的异步性1、在ReactV17/V16中this.setState()在合成事件on*系列事件、生命周期中是异步的。在宏任务、Promise.then()中是同步的2、在ReactV18以后无论this.setState()在哪里都是异步的。这种特性被称之为“并发模式”3、为什么要把this.setState()这个语句定义成异步的呢为了性能优化4、详解this.setState()的自动合并什么是this.setState()的自动合并在同一个函数域中多个this.setState()会自动合并以减少没有必要的Diff运算协调运算5、例子sub () { console.log(1---foo, this.state.foo); this.setState(state({foo: state.foo - 2}), ()console.log(3---foo, this.state.foo)); console.log(2---foo, this.state.foo); }效果

相关新闻

小学生C++竞赛学习路径规划:从零基础到获奖的四大阶段详解

小学生C++竞赛学习路径规划:从零基础到获奖的四大阶段详解

1. 项目概述:从“多久能获奖”到“如何有效学习”“小学生学C,一般大约多长时间能获奖?”——这大概是所有刚接触信息学竞赛的家长和孩子心中最直接、也最焦虑的问题。我接触过太多从零开始的孩子,也见过不少在赛场上崭露头角的“…

2026/7/17 6:00:29阅读更多 →
tokenspeed:用一串假 token,看懂 LLM 的“快“和“慢“

tokenspeed:用一串假 token,看懂 LLM 的“快“和“慢“

tokenspeed:用一串假 token,看懂 LLM 的"快"和"慢" 一个纯 Python 的终端小玩具,用假 token 模拟 LLM 的输出速度。没有实际模型,没有 API 调用,只是让你看看 30 tok/s 到底有多快、800 tok/s 又有…

2026/7/17 5:55:29阅读更多 →
python3GUI--使用PyQt5仿飞车登录界面(详细图文介绍)

python3GUI--使用PyQt5仿飞车登录界面(详细图文介绍)

文章目录 一.前言二.相关介绍1.游戏介绍2.PyQt53.界面效果简介 三.展示四.技术细节1.游戏资源获取2.界面布局分析3.代码编写原则4.组件化开发5.开发的乐趣6.往期优秀作品 五.总结 本篇用作技术分享交流,目的…

2026/7/17 5:55:29阅读更多 →
基于YOLOv8的智能条码识别技术实践与优化

基于YOLOv8的智能条码识别技术实践与优化

1. 项目概述在零售、物流和仓储管理领域,条码识别技术一直扮演着关键角色。传统基于规则和模板匹配的识别方法在面对复杂背景、变形条码或低质量图像时往往表现不佳。我最近完成了一个基于YOLOv8的智能条码识别项目,相比传统方案,模型在测试集…

2026/7/17 6:55:34阅读更多 →
LIO-SAM完整教程:如何用激光雷达惯性里程计实现高精度SLAM

LIO-SAM完整教程:如何用激光雷达惯性里程计实现高精度SLAM

LIO-SAM完整教程:如何用激光雷达惯性里程计实现高精度SLAM 【免费下载链接】LIO-SAM LIO-SAM: Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping 项目地址: https://gitcode.com/GitHub_Trending/li/LIO-SAM 还在为机器人定位与建图&…

2026/7/17 6:55:34阅读更多 →
深度解析:如何通过System Design Resources构建高可用分布式系统架构

深度解析:如何通过System Design Resources构建高可用分布式系统架构

深度解析:如何通过System Design Resources构建高可用分布式系统架构 【免费下载链接】system-design-resources These are the best resources for System Design on the Internet 项目地址: https://gitcode.com/gh_mirrors/sy/system-design-resources Sy…

2026/7/17 6:55:34阅读更多 →
终极iOS越狱解决方案:palera1n完整使用指南与教程

终极iOS越狱解决方案:palera1n完整使用指南与教程

终极iOS越狱解决方案:palera1n完整使用指南与教程 【免费下载链接】palera1n Jailbreak for A8 through A11, T2 devices, on iOS/iPadOS/tvOS 15.0, bridgeOS 5.0 and higher. 项目地址: https://gitcode.com/GitHub_Trending/pa/palera1n palera1n是一款基…

2026/7/17 6:55:34阅读更多 →
Minecraft世界下载器:3步永久保存服务器地图的终极方案

Minecraft世界下载器:3步永久保存服务器地图的终极方案

Minecraft世界下载器:3步永久保存服务器地图的终极方案 【免费下载链接】minecraft-world-downloader Download Minecraft worlds, extend servers render distance. 1.12.2 - 1.21 项目地址: https://gitcode.com/gh_mirrors/mi/minecraft-world-downloader …

2026/7/17 6:55:34阅读更多 →
ADS131A04的驱动代码(STM32 HAL库)

ADS131A04的驱动代码(STM32 HAL库)

一、硬件接线这是本项目中ADS131A04的原理图,AIN1与AIN2为ADC芯片的模拟输入端,AVDD、AVSS等引脚就按照典型应用连接,本项目中M2接地、M1通过1k电阻接地、M0接到IOVDD(高电平),这三个引脚设置了SPI为异步中…

2026/7/17 6:50:33阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/16 8:28:11阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/16 6:53:04阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/16 12:02:41阅读更多 →
VS Code 高效配置与个性化定制全攻略

VS Code 高效配置与个性化定制全攻略

1. VS Code 高效配置基础作为一款轻量级但功能强大的代码编辑器,VS Code 的默认配置已经能满足基本需求,但通过合理调整设置可以大幅提升编码效率。我使用 VS Code 已经有五年多时间,期间尝试过各种配置方案,总结出这套适合大多数…

2026/7/17 0:00:01阅读更多 →
从竞赛代码到桌面工具:让 SuperADD 与 SubspaceAD 真正跑进自己的图像

从竞赛代码到桌面工具:让 SuperADD 与 SubspaceAD 真正跑进自己的图像

在异常检测领域,很多优秀算法最初都是以研究代码的形式发布的。它们能够在固定测试集上复现实验结果,却不一定能被普通用户直接拿来测试自己的图片。尤其是最近很多算法仅提供在固定测试集的测试环境,而gradio的demo演示也不会提供。 对工程应用和在自己的图片上进行测试来…

2026/7/17 0:00:01阅读更多 →
WinRAR高效配置指南:从基础安装到高级压缩实战

WinRAR高效配置指南:从基础安装到高级压缩实战

前几天帮同事处理一个客户发来的压缩包,解压时系统自带的工具弹出一串乱码,换用 WinRAR 却顺利打开了。这种看似简单的场景,恰恰暴露了不同压缩工具在处理非标准编码、分卷压缩或加密文件时的差异。WinRAR 作为一款老牌工具,真正价…

2026/7/17 0:00:01阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/16 20:13:14阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/16 8:58:42阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/16 17:10:26阅读更多 →