You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1.2 KiB
1.2 KiB
这个函数的任务是创建 WorkInProgress 树的 Fiber 节点,更加传入参数的判断是复用已有的 Fiber 节点或是创建新的 Fiber 节点
createWorkInProgress
React 的首屏渲染时会交由 createWorkInProgress
函数生成一个 WorkInProgress Fiber
节点,这个节点就是 FiberNode,createWorkInProgress
接收两个参数,分别是 current
和 pendingProps
,这里的 pendingProps
是组件的属性
因为传入的是 current Fiber
树,所以 createWorkInProgress
内会从 current
的 alternate
取出中取出与之链接的 WorkInProgress Fiber
节点,并对其做空值判断,因为对于首屏渲染而言,WorkInProgress
是不存在的,所以会走到不存在 WorkInProgress
的逻辑,在这里也就是调用 createFiber
函数,这个函数会更加传递的参数 new
一个 Fiber 的实例,其内部并没有什么复杂的逻辑,而是对 Fiber 节点的属性进行了初始化,createFiber
返回之后,会对返回的 FiberNode 节点进行赋值,复用 current FiberNode
节点的内容,并对它们各自的 alternate
进行赋值,双向链接
createWorkInProgress
之后,Fiber 的操作就会交由 beginWork
和 completeWork
开始正式的递归