Notes

聊聊在 React 中,你对并发模式的理解

结论:React 并发的本质是“可中断的 render + 优先级调度”,让高优先级交互先完成;它不是多线程并行更新 DOM,commit 仍然是原子的。

1. 你需要说清的三件事

  • render 可中断:时间切片 + shouldYield(),避免长任务卡住主线程
  • 优先级可插队:输入等高优先级更新可打断低优先级更新(如 transition)
  • commit 不可中断:确保 UI 一致性,不展示半成品

2. 能举的典型例子

  • 输入框更新是高优先级;大列表过滤用 startTransition 降优先级
  • 结果:输入不卡、列表可稍后完成

3. 常见追问

  • “会不会丢状态?”:不会,更新会以 queue/lane 的形式保留,可能重做 render
  • “并发有什么代价?”:可能重复计算(被中断/放弃后重来)

关联阅读

cd ..