react源码学习之源码概述及本地环境搭建
/ / 点击 / 阅读耗时 4 分钟这应该是第五次开始学习react源码了,前四次开始之后就直接入坟了。。。好的react源码的分析资料太少了。。。还是得自己慢慢探索,希望这次能一步到胃。
源码概述
参考1描述了react源码主要结构:
- package/react(React Core)
 
React core only includes the APIs necessary to define components
- package/react-dom(renderers)
 
Renderers manage how a React tree turns into the underlying platform calls
packages/react-reconciler
- declarative rendering
 - custom components
 - state
 - lifecycle methods
 - refs
 
packages/legacy-events
Event system
这次计划围绕上面四个方面来探索。
本地学习环境构建
使用版本:16.13.1。
参考2这篇文章很好诶,为啥几乎没有点赞的。。。由于使用的版本和文章中的不同,所以这里详细列下:
- 通过create-react-app创建,执行
npm run eject暴露出配置文件 - 将react源码文件完整拷到上面项目的src目录下
 - 更改路由解析
 
1  | resolve:{  | 
在wenpack中配置alias之后,需要在
/src/react/packages/react'及/src/react/packages/react-dom加入对React和ReactDOM的默认导出处理flow 检测报错
1  | // 安装忽略flow检测的插件  | 
处理全局变量
1
2
3
4
5
6
7
8
9// 在/config/env.js中加入
"__DEV__": false,
"__PROFILE__": true,
"__UMD__": true,
"__EXPERIMENTAL__": true,
"__VARIANT__": true,invariant() 函数报错
改为任何时候都直接返回
1  | export default function invariant(condition, format, a, b, c, d, e, f) {  | 
- 处理HostConfig配置错误
 
1  | // 在src/react/packages/react-reconciler/src/ReactFiberHostConfig.js中添加下面的代码  | 
参考资料
全文完。