为什么看源码?卡在哪儿了?
很多前端同学 React 用得熟练,但一到性能优化就无从下手,或者被面试官问住「React 是如何处理并发的?」只能背八股文。这门课解决的核心问题,正是这种「会用但不懂原理」的能力断层。它不教你写 hello world,而是带你钻进 React 内部,理解从 JSX 到最终 DOM 的完整链路。适合有扎实 React 开发经验、想突破高级工程师瓶颈的读者。如果你对 Hooks 的闭包陷阱、State 更新的批处理机制已经有一定直觉,只是缺乏底层印证,这门课正好补上这块拼图。门槛在于需要你对 JavaScript 异步机制、原型链和浏览器事件循环有清晰认知,否则看调度器时会迷失。建议先确保自己能手写一个简易的 useEffect,理解虚拟 DOM diff 的基本逻辑,再开始跟随课程深入。
先看哪几块?怎么配合练习?
建议按以下顺序切入,不要一上来就啃 Scheduler:首先看「JSX 转换」和「react-element/component/ref」,这是渲染的基础单元;接着深入「render」和「Fiber Root」,理解树的结构;然后重点攻克「Fiber Scheduler」章节,这是 React 16+ 的核心,涉及时间切片、任务调度、并发渲染等高级特性。最后结合「Context」、「Suspense」和「Hooks」理解它们如何利用 Fiber 架构工作。每个章节的视频讲解后,务必在本地项目中打断点,观察 setState 触发后的调用栈,确认自己能否追踪到 batchedUpdates 的入口。遇到不懂的概念,先查 MDN 或 React 官方 RFC 文档,再回看视频,这样效率最高。配套练习建议自己实现一个简化版的 Fiber 链表,手动模拟 scheduleWork 的流程,加深对时间分片的理解。资料包里提供的代码示例不要直接复制运行,要逐行跟踪执行路径,记录每个关键函数的入参和返回值,形成自己的知识笔记。
学完能独立做什么?
完成后,你将能够:精准定位应用性能瓶颈,区分是渲染过多还是调度阻塞;自定义高阶组件或 Hooks 时,清楚知道其在工作机制中的位置;向团队解释并发模式的取舍,不再人云亦云;应对高级前端面试中关于 React 更新流程、Fiber 链表操作、时间分片等深度问题。这门课不是速成指南,而是一份「源码地图」——它不能替你写业务代码,但能让你在遇到复杂交互问题时,知道该往哪个方向排查。具体而言,你能独立分析一个卡顿页面的根因,判断是频繁 setState 导致的重渲染,还是 Scheduler 优先级调度不当,从而采取针对性的优化策略。此外,你还能在社区或团队中产出高质量的源码分析文章,帮助更多开发者建立系统的 React 内部认知,真正具备高级工程师应有的技术深度和输出能力。
课程目录
第1章 课程导学 试看 1 节 | 12分钟 1-1 课程导学 (11:08) 第2章 基础知识 React API 一览 试看 12 节 | 124分钟 2-1 准备工作 (11:07) 2-2 JSX到JavaScript的转换 (07:17) 2-3 react-element (11:08) 2-4 react-component (08:46) 2-5 react-ref (06:40) 2-6 forward-ref (06:55) 2-7 context (10:26) 2-8 concurrent-mode (09:32) 2-9 suspense-and-lazy (09:32) 2-10 hooks (11:02) 2-11 children (22:34) 2-12 others (08:28) 第3章 React中的更新 试看 7 节 | 98分钟 3-1 react-dom-render (25:41) 3-2 react-fiber-root (10:45) 3-3 react-fiber (12:50) 3-4 react-update-and-updateQueue (14:24) 3-5 react-expiration-time (15:50) 3-6 different-expirtation-time (11:29) 3-7 react-setState-forceUpdate (06:55) 第4章 Fiber Scheduler 11 节 | 172分钟 4-1 总结流程概览 (20:04) 4-2 scheduleWork (22:13) 4-3 requestWork (09:49) 4-4 batchedUpdates (15:12) 4-5 reactScheduler(1) (12:54) 4-6 reactScheduler(2) (12:39) 4-7 reactScheduler(3) (20:10) 4-8 reactScheduler(4) (14:19) 4-9 performWork (18:43) 4-10 renderRoot (14:00) 4-11 最后补充 (11:41) 第5章 各类组件的Update 13 节 | 155分钟 5-1 入口和优化 (17:47) 5-2 FunctionalComponent的更新 (07:06) 5-3 reconcilerChildren (26:36) 5-4 reconcilerChildren-array (23:57) 5-5 updateClassComponent (27:01) 5-6 ClassComponent的更新 (09:10) 5-7 IndeterminateComponent组件类型和其更新过程 (07:03) 5-8 HostRoot的更新 (05:11) 5-9 HostComponent和HostText的更新 (08:29) 5-10 Poratl组件的更新 (05:11) 5-11 ForwardRef的更新 (02:54) 5-12 Mode组件的更新 (04:55) 5-13 Memo组件的更新 (09:16) 第6章 完成节点任务 9 节 | 108分钟 6-1 completeUnitOfWork的整体流程和意义 (24:12) 6-2 重设childExpirationTime (06:54) 6-3 completWork具体做了什么 (04:00) 6-4 初次渲染中completeWork对于DOM节点的创建和appendAllChild算法 (16:50) 6-5 初次渲染中如何进行DOM节点属性初始化操作 (14:22) 6-6 更新DOM时进行的diff判断 (08:24) 6-7 completeWork阶段对于HostText的更新 (03:21) 6-8 renderRoot中对于错误的处理 (14:03) 6-9 unwindWork以及React中的错误处理 (15:02) 第7章 commitRoot 8 节 | 96分钟 7-1 commitRoot的总体工作内容 (11:31) 7-2 invokeGuardedCallback开发时的帮助方法 (13:44) 7-3 commitRoot第一个操作-获取快照 (04:57) 7-4 commitAllHostEffects总体做了哪些事情 (06:23) 7-5 commitPlacement插入新的子节点的操作 (17:31) 7-6 commitWork更新节点属性的过程 (11:50) 7-7 commitWork删除节点的操作过程 (17:47) 7-8 commitLifecycles调用生命周期方法 (11:23) 第8章 功能详解:基础 13 节 | 197分钟 8-1 context-stack (12:21) 8-2 遗留context-api的实现过程(1) (17:06) 8-3 遗留context-api的实现过程(2) (15:19) 8-4 新context的实现 (22:36) 8-5 ref的实现过程 (09:25) 8-6 hydrate-是否需要hydrate的判断 (06:44) 8-7 hydrate-更新开始判断节点是否可以hydrate (11:35) 8-8 hydrate-再completeWork中复用可hydrate的节点 (16:09) 8-9 event事件系统初始化-注入平台事件插件 (20:12) 8-10 event事件监听的过程 (14:24) 8-11 event-事件触发的过程 (21:16) 8-12 event-事件对象的生产过程 (19:40) 8-13 event查漏补缺 (09:58) 第9章 suspense and priority 7 节 | 104分钟 9-1 优先级和任务挂起的含义(1) (14:48) 9-2 优先级和任务挂起的含义(2) (14:35) 9-3 两个expirationTime的不同作用 (11:55) 9-4 Suspense组件同步模式下的更新 (24:12) 9-5 Suspense组件同步渲染模式补充 (08:43) 9-6 Suspense组件异步模式下的更新 (20:24) 9-7 retrySuspendedWork所做的事情 (08:35) 第10章 功能详解:Hooks 6 节 | 100分钟 10-1 什么是Hooks以及他的用法 (22:29) 10-2 Hooks的定义以及执行前后的准备和重置 (17:54) 10-3 useState的实现原理和注意事项(1) (13:38) 10-4 useState的实现原理和注意事项(2) (13:59) 10-5 useEffect和useLayoutEffect的实现原理和区别 (23:37) 10-6 其他Hooks的实现 (08:20) 第11章 课程总结 1 节 | 13分钟 11-1 课程总结 (12:05)





