|
|
|
@ -66,8 +66,13 @@ createInstance 会调用 createElement 方法创建一个 DOM 实例,并调用
@@ -66,8 +66,13 @@ createInstance 会调用 createElement 方法创建一个 DOM 实例,并调用
|
|
|
|
|
|
|
|
|
|
### cloneChildFibers |
|
|
|
|
|
|
|
|
|
这个函数从名字上就能看出来,目的是为了 clone Fiber 的 child 属性,这个函数会调用 createWorkInProgress 函数,从上边可以知道,这个函数可以根据传入的 current 和 WorkInProgress 进行判断是否创建一个新的 Fiber 节点或者复用已有的 current Fiber 节点,并将其互相链接,最终将结果返回,cloneChildFiber 接收到 |
|
|
|
|
这个函数从名字上就能看出来,目的是为了 clone Fiber 的 child 属性,这个函数会调用 createWorkInProgress 函数,从上边可以知道,这个函数可以根据传入的 current 和 WorkInProgress 进行判断是否创建一个新的 Fiber 节点或者复用已有的 current Fiber 节点,并将其互相链接,最终将结果返回,cloneChildFiber 接收到返回的 Fiber 子节点,将其链接到当前 WorkInProgress Fiber 的 child 属性上,并把 Fiber 子节点的 return 赋值 WorkInProgress Fiber |
|
|
|
|
|
|
|
|
|
最后返回到 bailoutOnAlreadyFinishedWork 在由它返回到 beginWork,beginWork 流程执行结束 |
|
|
|
|
|
|
|
|
|
### 第二次触发更新 |
|
|
|
|
|
|
|
|
|
### createWorkInProgress |
|
|
|
|
第一步很熟悉,有了前面两次执行的流程可以cai'dao |
|
|
|
|
|
|
|
|
|
### 后续触发更新 |