1
0
Fork 0
Browse Source

vault backup: 2022-04-22 16:00:54

master
YuJian 3 years ago
parent
commit
6867cf2ccf
  1. 5
      自顶向下学 React 源码/React 源码的碎片记录.md

5
自顶向下学 React 源码/React 源码的碎片记录.md

@ -39,4 +39,7 @@
- 如果一个 FunctionComponent 内部有需要执行的 useEffect ,那么这个 FunctionComponent 的 Fiber 节点就会被打上 PassiveEffect 的 effectTag - 如果一个 FunctionComponent 内部有需要执行的 useEffect ,那么这个 FunctionComponent 的 Fiber 节点就会被打上 PassiveEffect 的 effectTag
- commitRootImpl 函数开头的 do..while 循环是为了判断当前 Fiber 是否还有还未执行的 useEffect,如果有会再次执行 flushPassiveEffect 函数 - commitRootImpl 函数开头的 do..while 循环是为了判断当前 Fiber 是否还有还未执行的 useEffect,如果有会再次执行 flushPassiveEffect 函数
- commitRootImpl 内会处理一些离散事件,然后会重置在 render 阶段使用的一些全局变量,然后会处理包含 effectList 链表:因为 effectList 只会处理根节点之下的子节点,所以这里要判断根节点是否存在 effectTag 然后将其挂载到 effectList 的末尾 - commitRootImpl 内会处理一些离散事件,然后会重置在 render 阶段使用的一些全局变量,然后会处理包含 effectList 链表:因为 effectList 只会处理根节点之下的子节点,所以这里要判断根节点是否存在 effectTag 然后将其挂载到 effectList 的末尾
- commitBeforeMutationEffect、commitMutationEffects、commitLayoutEffects 三个函数分别代表了 mutation 的三个不同阶段 - commitBeforeMutationEffect、commitMutationEffects、commitLayoutEffects 三个函数分别代表了 mutation 的三个不同阶段
- commitRootImpl 中有许多与 Interaction 相关的逻辑,这些逻辑和 React 的性能追踪有关,会在 React DevTool 中使用
- 在 commit 阶段的结尾,也就是 commitRootImpl 函数的结尾,由于在 commit 阶段可能会产生新的更新,所以在这里会将整个应用的根节点重新调度一次
- React 会将一些同步的更新放在一个叫 SyncCallbackQueue 的队列中,每次执行 flushSyncCallbackQueue 函数就会执行整个队列中的同步任务
Loading…
Cancel
Save