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

setState组件更新

setState -> 告诉React 状态变化 -> 需要重新渲染 -> 重新执行NameInput函数

import { useState } from "react"; function NameInput() { const [name, setName] = useState("") console.log(name) const [agreed, setAgreed] = useState(false) console.log(agreed) return ( <> <input value={name} onChange={(e) => setName(e.target.value)} /> <input type="checkbox" checked={agreed} onChange={(e) => setAgreed(e.target.checked)} /> </> ) } export default NameInput

原理很简单:console.log(agreed)写在组件函数体里,不是写在事件回调里。

React 组件本质就是一个函数,每次这个组件要重新渲染,React 就会重新调用这个函数一遍,函数体里的代码(包括console.log)都会重新执行一次。

点击 checkbox 的流程是:

  1. 触发onChange,调用setAgreed(e.target.checked)
  2. setAgreed是 state 更新函数,调用它会告诉 React:"这个组件的状态变了,需要重新渲染"
  3. React 重新执行NameInput()这个函数
  4. 函数体从头执行一遍,console.log(agreed)也就跟着执行一遍,打印出最新的agreed

所以你点一次 checkbox,setAgreed触发一次重渲染,NameInput函数体整体跑一遍,console.log自然就打印一次。同理你打字改name的时候,console.log(name)也会跟着打印,因为setName也会触发重渲染。

这也是为什么之前提到的TodoApp里那个console.log在 StrictMode 下刷新会打印 2 次的原因是一样的:只要函数体被调用,里面所有同步代码都会执行,不只是 return 的 JSX。

http://www.jsqmd.com/news/1170271/

相关文章:

  • 欧米茄发条教学与维修保养指南权威公示(2026年7月最新) - 欧米茄服务中心
  • MCP3551与PIC18F25K50高精度数据采集方案详解
  • App 内嵌 H5 秒开技术方案
  • 研究生 AI 率卡 15% 红线怎么降到达标?
  • Mininet 2.3.1 无控制器环境搭建:3步配置静态流表实现主机互通
  • Deepseek-R1-7B安卓端侧部署实战:从量化到HTTP服务
  • PB9 老HIS系统续命记:从10M崩溃到187个PBL的编译生存指南
  • Python 定时任务可靠性:Celery Beat + 数据库锁避免重复执行
  • 2026年7月最新青岛欧米茄官方售后客服电话及服务网点地址查询 - 欧米茄官方服务中心
  • Cursor Tab补全响应延迟>300ms?用这3行配置+2个插件重写补全管道,实测首字符触发提速2.8倍
  • meta-openeuler项目深度解析:9000+软件包YAML配置的终极管理方案
  • AI自我改进系统构建:从Harness Engineering到工程实践
  • EMQX 5.0 亿级连接实战:3步配置实现单节点百万MQTT设备接入
  • 当AI开始“思考”:我们该如何界定它的权利与责任?
  • 亲身到店探访海口亨得利官方名表服务中心|热线电话与门店地址(2026年7月更新) - 亨得利官方
  • Claude Fable 5延期发布:AI编程助手的技术突破与安全挑战
  • 设计品牌标语选实力强公司看案例
  • 大疆上云API 1.8.0 航线管理源码实战:5个核心接口与对象存储集成详解
  • uni-app 微信小程序开发:TypeScript 常用语法总结
  • 禅道 22.x 缺陷管理实战:5步闭环流程与7种解决方案详解
  • 从廊坊到全国:君启修缮“全国连锁+廊坊总部”双优势如何构建标准化防水服务体系? - 鲁顺
  • 弱模型在多次生成调用PaddlePaddle失败的代码后
  • syscontainer-tools 与 iSulad 集成指南:构建企业级容器平台
  • 告别出差:AR远程运维如何让专家“瞬移”到设备现场
  • TPA3128D2与PIC18F4550打造高性价比D类功放方案
  • 数字生命体作为智能观察员:从角色定义到平台集成实践
  • CD4511 与 NE555 驱动数码管:从静态显示到过流闪烁的3种电路设计对比
  • CryptoJS 4.0.0 AES 前端加密实战:ECB与CBC模式3种代码实现对比
  • 2026珠海叉车出租网点硬核横评:六家实体商家实测数据与避坑选型终极指南 - 品牌报告
  • 本科毕业论文 AI 率 40% 怎么降到 20% 以内一次过?