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

【React】setState 触发渲染的流程

概述

  1. setState 本质是向React Fiber 树中加入一个更新(update)
  2. 触发调度(schedule)
  3. 在协调阶段(reconciliation)通过 diff 算法计算变更
  4. 最终在提交阶段(commit)更新 DOM。
setState ↓ 创建 update 对象 ↓ 加入 Fiber updateQueue ↓ 调度更新(schedule) ↓ render 阶段(diff) ↓ commit 阶段(更新 DOM)

详细流程

创建 update

constupdate={payload:newState,lane:priority};

加入更新队列

fiber.updateQueue.enqueue(update);

调度更新

scheduleUpdateOnFiber(fiber);

React 18 使用 Lane 模型来管理优先级(替代 expirationTime)

为什么 setState 会导致组件重新执行?

因为:

  • Fiber 标记为“需要更新”
  • React 会重新执行函数组件(或 class render)
functionApp(){// setState 后,这个函数会重新执行}

rerender 是“函数重新执行”,不是 DOM 直接更新

React diff 是基于“同层 + key + 类型”的算法

render vs commit

render 阶段(可中断)执行函数组件,生成新的虚拟 DOM

  • 计算 diff(协调算法 reconciliation)
  • 构建 Fiber 树

commit 阶段(不可中断)

  • 更新 DOM
  • 执行副作用(useEffect)

commit 是同步执行的,保证 UI 一致性

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

相关文章:

  • 基于STM32的‘水位检测自动控制系统‘:支持超声波模块、DS18B20传感器,包含原理图、P...
  • 基于液压控制的冲床自动送料机的设计【说明书+CAD+外文翻译】
  • Math.js 使用教程
  • 五相电机双闭环矢量控制模型:原理说明、仿真波形及完整版Simulink模型
  • Windows下5种端口连通性测试方法实测对比(附详细命令)
  • Ostrakon-VL-8B多模态运维监控实战:智能日志分析与故障预警
  • e1547:重新定义e621浏览体验的现代化客户端解决方案
  • Golang笔记1-变量与类型
  • 3步优化鸣潮游戏体验:面向全层级玩家的WaveTools工具箱使用指南
  • VI、 UI 和 UX 设计区别,详细介绍
  • # 发散创新:基于Python与OpenCV的手势识别系统实战详解在人工智能快速发
  • 终极指南:使用payload-dumper-go快速提取Android OTA更新包
  • 【VBA】【EXCEL】分类汇总
  • 篡改猴Tampermonkey失效解决方案
  • 单目相机实战:用OpenCV的solvePnP实现物体位姿估计(附Python代码)
  • C++ STL 核心:string 从入门到精通(面试+源码+OJ实战)
  • 100个服装款的PPT商品详情页,我用这三步1分钟搞定
  • 常见网络连接问题分类
  • 基于非对称纳什谈判理论的微网电能共享运行优化策略:合作博弈与P2P交易完美复现的完美电网技术文献实践
  • 2026年二手化工设备二手制药设备厂家最新推荐:二手蒸发器回收、二手离心机回收、二手干燥机回收、二手混合机回收、二手反应釜回收厂家选择指南 - 海棠依旧大
  • 游戏开发中的“场”魔法:用梯度、散度模拟水流、烟雾与热量扩散
  • ParaView实战:5分钟搞定热流图单元格体积计算(附Python脚本)
  • 4月3日
  • C++ 硬件特征自适应分发:利用 C++ 特性实现对不同 CPU 指令集(AVX2/AVX-512)的运行时代码路径最优选择
  • **发散创新:基于C语言实现的实时内核任务调度机制设计与实践**在嵌入式系统开发中,**实时内核(Real-TimeK
  • NCM格式自由转换:用ncmdump突破网易云音乐加密限制
  • 无氟空调蜗轮塑料模设计【说明书+solidworks三维+CAD图纸+开提报告+任务书+数控编程及加工录像】
  • 回溯算法解组合总和问题(Python,Java,C语言)
  • 股票相似K线匹配的Python实现:Tushare数据+皮尔逊相关系数全解析
  • PHP脚本设置无限执行时间的四种方法