c18400fd7dd78cfcd6bf315a36778b0.jpg
react16架构分为3层:
Scheduler(调度器):调度任务的优先级,高优先级优先进入Reconciler
Reconciler(协调器):负责找出变化的组件
Renderer(渲染器):负责将变化的组件渲染到页面上。

调度器

除了空闲时触发回调的功能,还提供多种调度优先级供任务设置。

协调器

ReconcilerRenderer不再是交替工作。当Scheduler将任务交给Reconciler后,Reconciler会为变化的虚拟DOM打上代表增/删/更新的标记
image.png
整个Scheduler和Reconciler都是在内存中进行。当所有组件都完成了Reconciler工作后,统一交给Renderer。

渲染器

Renderer根据Reconciler为虚拟Dom打的标记,执行对应的Dom操作。
bc62c5f85d154cc6c30b0c705d539fe.jpg
由于协调器是在内存中中断的,不会更新页面DOM,所以用户感受不到中断的过程,不觉得中断。
b6bf06e6ed848173dbc0276b6e67a69.jpg
当协调器完成了本次工作,会移交给渲染器,并通知渲染器更新视图。
React16架构 - 图5

红色框的步骤随时都可能被打断?

  • 有其他更高优先级的任务需要执行
  • 当前帧没有剩余时间。

但是由于调度器和协调器都是在内存中,不会更新页面上的DOM。及时反复中断,用户也感受不到。