共计 994 个字符,预计需要花费 3 分钟才能阅读完成。
ReactDOM.render()
- 第一次渲染,入口
render
params
- element: 通过 babel 编译后 React.createElement 对象
- container: dom 对象,div#root
- callback: 渲染实现后到回调函数(不须要关注,个别没用)
legacyRenderSubtreeIntoContainer
params
- parentComponent: null
- children: React.createElement
- container: div#root
- forceHydrate: false; 客户端渲染 和 服务端渲染 辨别标识
- callback
性能
- 创立 FiberRoot 和 RootFiber
updateContainer
params
- element: React.createElement
- container: FiberRoot
- parentComponent
- callback
性能
- 通过 rootFiber 失去 lane
- 创立 update 对象,放到 updateQueue 中
scheduleUpdateOnFiber
params
- fiber
- lane
- eventTime
性能
- 获取 fiber 的 root: markUpdateLaneFromFiberToRoot
performSyncWorkOnRoot
params
- root: FiberRoot
性能
- 执行 renderRoot 和 commitRoot
- root.finishedWork = root.current.alternate(workInProgress)
- root.finishedLanes = lanes;
renderRoot
params
- root
- lanes
性能
- 创立 workInProgress: prepareFreshStack
- root.finishedWork、finishedLanes 复原默认值
- workInProgressRoot = root;
- 给全局 workInProgress 赋值
- 执行 workLoop
workLoop
性能
- 执行 while 循环: 判断条件—— workInProgress !== null;(只有 rootFiber.return 是 null)
performUnitOfWork
params
- unitOfWork: workInProgress
性能
- 执行 beginWork
- 执行 completeUnitOfWork
commitRoot
params
- root
正文完