并发概念
并发模式是一种全新渲染模式,允许React同时处理多个渲染任务,可以根据任务的优先级进行调度。并发模式下,React可以暂停、继续或放弃渲染任务,确保高优先级的任务能够及时响应。
React如何做到Concurrent Mode?
- Concurrent Mode的挑战
- 怎样做到中断渲染?
- 怎样定义任务的重要程度和执行顺序?
- 何时中断任务,怎样划分时间片?
- 。。。。
- 解决方法
- 颗粒化更新节点解决递归不可中断问题
- 任务增加优先级解决任务执行顺序
- 创建任务调度机制解决时间分片和任务中断、任务恢复;
对应的React的实现就是:Fiber架构、lane模型、scheduler任务调度
Fiber结构----主要解决渲染可中断
lane模型----主要解决任务优先级问题
Scheduler任务调度----主要解决任务分片执行和中断恢复
scheduler中有两种任务队列,taskQueue和timerQueue,他们分别存放未过期任务和已过期任务。
taskQueue
依据任务的过期时间expirationTime排序,过期时间越早表示任务优先级越高。
time erQueue
依据任务的开始时间startTime排序,开始时间越早优先级越高。
并发模式使用
需要使用createRoot方法创建根节点
import React from 'react'
import ReactDOM from 'react-dom/client'
import App from './App'
const root = ReactDOM.createRoot(document.getElementById('root'))
root.render(<App/>)
总结:
本文主要从Fiber架构,lane模型,scheduler任务调度三个角度来尝试阐述Concurrent Mode的主要特性:异步可中断更新。
-
通过
Fiber架构完成从递归遍历更新到循环遍历更新的跨越,让render阶段可中断; -
通过
lane模型给不同任务事件添加优先级来定义任务的重要程度; -
通过
scheduler完成任务分片执行和中断恢复;