React 中的优先级设计
一句话结论:React 把“更新来源”映射到不同优先级,核心目标是保证交互优先、可中断更新不阻塞主线程,并通过过期机制避免低优先级永远得不到执行。
1. 从宿主优先级到 React 语义
- Scheduler 常见优先级:Immediate / UserBlocking / Normal / Low / Idle
- React 常见映射:同步事件、连续输入、默认更新、Transition、空闲更新等
2. 为什么要分这么细
- 输入/点击必须优先:否则用户感知是“坏了”
- 列表渲染/数据刷新可稍后:允许被打断,提升整体流畅度
3. 如何避免饥饿
- 低优先级更新如果等太久会“过期”(expired)并被提升
- 这使得系统在“响应性”与“最终完成”之间取得平衡