请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

completeUnitOfWork 里面的firstEffect,lastEffect ,没有明白为什么这么做?为什么串联起来。

正在回答 回答被采纳积分+3

1回答

好帮手慕小李 2025-02-10 10:42:15

在 React 的 completeUnitOfWork 函数中,firstEffectlastEffect 被用来维护一个副作用(side-effect)链表。这个链表记录了所有需要在 commit 阶段执行的副作用操作。在 completeUnitOfWork 函数中,当一个 Fiber 节点完成时,它的副作用会被添加到父节点的副作用链表中。具体来说,如果父节点的 firstEffectnull,则直接将当前节点的 firstEffect 赋值给父节点的 firstEffect;如果父节点已经有副作用,则将当前节点的 firstEffect 链接到父节点的 lastEffectnextEffect 上,并更新父节点的 lastEffect 为当前节点的 lastEffect。这样做的目的是为了在 commit 阶段能够方便地遍历这个链表,执行所有需要的副作用操作。

此外,completeUnitOfWork 函数中会完成这一步,把所有的effect节点进行一个串联,让 commitWork 的阶段可以非常方便的根据这个链去执行每一个节点的最终的操作。这个链状结构最终是用于 commitWork 的时候用来进行对这些有 SideEffect的节点进行 commit 的一个操作。


0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号