合并多个更新触发
一句话结论:合并(batching)让同一时机触发的多次更新只产生一次渲染;React 18 的自动批处理把范围从“事件回调”扩展到“更多异步边界”。
1. 为什么要合并
- 多次
setState各自渲染会浪费计算与 DOM 更新 - 合并后:只做一次 render/commit,性能更稳定
2. React 18 自动批处理要点
- 不仅是 React 事件回调内:Promise、
setTimeout等也会被批处理(默认) - 本质:把调度推迟到“本轮结束的统一时机”(常用 microtask 实现)
3. 如何“跳出”批处理
- 需要强制同步落地时使用
flushSync(代价是可能更卡)