react
原理, 基于react@17.0.1
(尽可能跟随 react 版本的升级, 持续更新). 用大量配图的方式, 致力于将react
原理表述清楚.
- 本系列以 react 核心包结构和运行机制为主线索进行展开. 包括
react 宏观结构
,react 工作循环
,react 启动模式
,react fiber原理
,react hook原理
,react 合成事件
等核心内容. - 开源作品需要社区的净化和参与, 如有表述不清晰或表述错误, 欢迎issue 勘误. 如果对你有帮助, 请不吝 star.
- 本系列最初写作于 2020 年 6 月(当时稳定版本是 v16.13.1), 随着 react 官方的升级, 本 repo 会将主要版本的文章保存在以版本号命名的分支中, 当前
master
分支同步v17.0.1
. 部分文章未更新, 可以参照v16.13.1
分支. - 当下前端技术圈总体比较浮躁, 各技术平台充斥着不少"标题党". 真正对于技术本身, 不能急于求成, 需要静下心来修炼.
- 本系列不是面经, 但会列举一些面试题来加深对 react 理解.
- 本系列所有内容皆为原创, 如需转载, 请注明出处.
- 对
react
,react-dom
开发 web 应用有实践经验. - 期望深入理解
react
内在作用原理.
react@17 到目前(2021 年 02 月 22 日)共有 2 个版本的发布(react@17.0.0
, react@17.0.1
), 其中v17.0.0
作为主版本升级(具体变动详见官方更新日志)相较于 16.x 版本, 在使用层面基本维持不变, 在源码层面需要关注的重大的变动如下
重大变动 | 所属板块 | 官方解释 |
---|---|---|
重构Fiber.expirationTime 并引入Fiber.lanes |
react-reconciler |
Initial Lanes implementation #18796 |
事件代理节点从 document 变成 rootNode, 取消合成事件的缓存池等 | legacy-events(被移除) , react-dom/events |
changes-to-event-delegation |
- reconciler 运作流程
- 启动过程
- 优先级管理
- scheduler 调度原理
- fiber 树构造(基础准备)
- fiber 树构造(初次创建)
- fiber 树构造(对比更新)
- fiber 树渲染
- 异常处理
- 状态组件(
class
) - 状态组件(
function
) - hook 原理(
useState
)(17.0.1 分支未完成, 可以参考 v16.13.1 分支中的分析) - hook 原理(
useEffect
)(17.0.1 分支未完成, 可以参考 v16.13.1 分支中的分析) - context 原理(17.0.1 分支未完成, 可以参考 v16.13.1 分支中的分析)
- 合成事件原理(17.0.1 分支未完成, 可以参考 v16.13.1 分支中的分析)