各位同学,大家好! 欢迎来到“React 内部架构解密”系列讲座的第 N 期。今天,咱们要聊的东西有点“硬核”,有点“底层”,甚至有点像是在拆一台正在运行的机器。 如果不加修饰地说,React Fiber 是一个调度算法;但如果用更通俗的话来说,Fiber 是 React 的心脏,是它的调度员。而今天我们要讲的 completeWork,则是这个调度员在完成工作后,真正动手“盖房子”的那个阶段。 咱们今天不整那些虚头巴脑的“引言”,也不搞什么“总结升华”。咱们直接把 React 的源码扒开,拿个放大镜,看看它是怎么把一个 JavaScript 对象(Fiber 节点),变成屏幕上一个实实在在的 HTML 标签(DOM 节点)的。 准备好了吗?咱们开始吧。 第一部分:Fiber 是怎么“走”的?栈帧与迭代 在深入 completeWork 之前,咱们得先搞清楚一件事:Fiber 是怎么遍历那棵树的? 在 React 旧版本(Stack Reconciler)里,那是个递归过程。就像你走路,你只能走到头,走到头了再回头。如果树太大,递归太深,浏览器主线程就被卡住了,用户就会感觉到页面卡顿。 …