关于react.js:React-render过程
- 第一次渲染,入口
- element: 通过 babel 编译后 React.createElement 对象
- container: dom 对象,div#root
- callback: 渲染实现后到回调函数(不须要关注,个别没用)
- parentComponent: null
- children: React.createElement
- container: div#root
- forceHydrate: false; 客户端渲染 和 服务端渲染 辨别标识
- callback
- 创立 FiberRoot 和 RootFiber
- element: React.createElement
- container: FiberRoot
- parentComponent
- callback
- 通过 rootFiber 失去 lane
- 创立 update 对象,放到 updateQueue 中
- fiber
- lane
- eventTime
- 获取 fiber 的 root: markUpdateLaneFromFiberToRoot
- root: FiberRoot
- 执行 renderRoot 和 commitRoot
- root.finishedWork = root.current.alternate(workInProgress)
- root.finishedLanes = lanes;
- root
- lanes
- 创立 workInProgress: prepareFreshStack
- root.finishedWork、finishedLanes 复原默认值
- workInProgressRoot = root;
- 给全局 workInProgress 赋值
- 执行 workLoop
- 执行 while 循环: 判断条件—— workInProgress !== null;(只有 rootFiber.return 是 null)
- unitOfWork: workInProgress
- 执行 beginWork
- 执行 completeUnitOfWork
- root