1
0
Fork 0
Obsidian 管理的个人笔记仓库
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.
 
 

738 B

commitMutationEffects 对应 commit 中的 mutation 阶段,这个方法内部是一个 while 循环,遍历 effectList 链表,遍历到的每一个 Fiber 节点首先会判断是否存在 ConentReset 标记,这个标记表示 Fiber 是否需要重置文本节点

commitResetTextContent

然后会判断是否存在 Ref 标记

commitDetachRef

然后进入 mutation 阶段最重要的逻辑:判断 Fiber 阶段是否存在以下 effectTag

  1. Placement 插入DOM
  2. Update 更新属性
  3. Deletion 删除 DOM 节点
  4. Hydrating SSR 相关

然后根据 effectTag 不同进入不同的处理逻辑

Placement

commitPlacement 如果当前环境不支持 mutation 会直接返回,ReactDom 下是支持的