React 源码 - 优先级

115 阅读1分钟
ReactDOM.render()、 ReactDOM.createRoot()
  • render:同步更新
  • createRoot:异步更新
React 优先级:baseState + Update1 + Update2 = newState
  • NoPriority = 0; // 初始化
  • ImmediatePriority = 1; // 立刻、同步执行:生命周期、受控的用户输入
  • UserBlockingPriority = 2; // 由用户触发:click、focus
  • NormalPriority = 3; // 一般优先级:axios、setState
  • LowPriority = 4; // 低优先级:react.suspense
  • IdlePriority = 5; // 空闲时间优先级
案例:如果请求数据的过程中,触发了click事件?
  1. 数据请求的 Normal 调度会被打断
  2. 先执行优先级高的 User 调度
  3. 执行完 User 再执行 Normal

image.png