图 4:状态更新队列(setState/useState)与批处理

📝 解析 :
setState 并非立即修改 this.state,而是创建 Update 对象挂载到 Fiber 节点的更新队列上。批处理 (Batching)机制让同一个事件循环内的多次 setState 合并为一次更新,这是 React 性能优化的默认手段。但在异步代码(如 setTimeout)中,批处理会被破坏,此时可使用 flushSync 强制同步刷新。
图 5:Fiber 调度器(Scheduler)的工作循环与时间切片
📝 解析 :
React 调度器的核心是 "时间切片" (Time Slicing)。它利用 requestIdleCallback 或 MessageChannel 模拟浏览器空闲期。每个工作单元执行前都会检查当前帧的剩余时间,如果不足 5ms(默认阈值),则主动让出主线程,避免阻塞用户输入或动画。这是 React 实现并发模式(Concurrent Mode) 的底层引擎。