聊聊在 React 中,你对并发模式的理解
结论:React 并发的本质是“可中断的 render + 优先级调度”,让高优先级交互先完成;它不是多线程并行更新 DOM,commit 仍然是原子的。
1. 你需要说清的三件事
- render 可中断:时间切片 +
shouldYield(),避免长任务卡住主线程 - 优先级可插队:输入等高优先级更新可打断低优先级更新(如 transition)
- commit 不可中断:确保 UI 一致性,不展示半成品
2. 能举的典型例子
- 输入框更新是高优先级;大列表过滤用
startTransition降优先级 - 结果:输入不卡、列表可稍后完成
3. 常见追问
- “会不会丢状态?”:不会,更新会以 queue/lane 的形式保留,可能重做 render
- “并发有什么代价?”:可能重复计算(被中断/放弃后重来)