Skip to content

ReactDOM.createRoot()

image

可以对于ReactDOM.createRoot()主要的流程为 1. 初始化FiberNode 2. 初始化合成事件

warnIfReactDOMContainerInDEV(container)

主要是做检查工作。

  1. 检查不能绑定在Document元素上。

    绑定到body元素上会导致后面 script的插入失效,完全无法执行

  2. 不能重复的创建

    在创建完成后会通过markContainerAsRoot(root.current, container); 在节点上缓存当前的FiberNode

image

createContainer()

createRoot()的主要工作之一,初始化FiberNode,其主要包含 : 1. 初始化FiberRootNode 和 初始化FiberNode; 2. 关联两个 3. 初始化FiberNode的更新队列

const root = new FiberRootNode()

const fiberNode = createHostRootFiber()

FiberRootNode和 FiberNode互相关联

initializeUpdateQueue(fiberNode)

markContainerAsRoot(root.current, container) 标记根节点初始化完成

listenToAllSupportedEvents(rootContainerElement)(初始化合成事件)

这个比较重要,专门的一章讲这一方面的知识

最后

image

通过原型的方式提供了 renderunmount 的方法