|
|
@ -37,7 +37,7 @@ |
|
|
|
- useEffect 的回调函数会在 before mutation 阶段会以普通优先级被调度,然后在 commit 阶段执行完毕之后再异步执行 |
|
|
|
- useEffect 的回调函数会在 before mutation 阶段会以普通优先级被调度,然后在 commit 阶段执行完毕之后再异步执行 |
|
|
|
- commit 阶段开始于 commitRoot 函数,这个函数内部会执行 runWithPriority 函数,该函数接收两个参数,第一个是调度的优先级,第二个是调度的回调函数,在这个函数中触发的任务调度都会以第一个参数传递的优先级执行 |
|
|
|
- commit 阶段开始于 commitRoot 函数,这个函数内部会执行 runWithPriority 函数,该函数接收两个参数,第一个是调度的优先级,第二个是调度的回调函数,在这个函数中触发的任务调度都会以第一个参数传递的优先级执行 |
|
|
|
- 如果一个 FunctionComponent 内部有需要执行的 useEffect ,那么这个 FunctionComponent 的 Fiber 节点就会被打上 PassiveEffect 的 effectTag |
|
|
|
- 如果一个 FunctionComponent 内部有需要执行的 useEffect ,那么这个 FunctionComponent 的 Fiber 节点就会被打上 PassiveEffect 的 effectTag |
|
|
|
- commitRootImpl 函数开头的 do..while 循环是为了判断当前 Fiber 是否还有还未执行的 useEffect,如果有会再次执行 flushPassiveEffect 函数 |
|
|
|
- commitRootImpl 函数开头的fec do..while 循环是为了判断当前 Fiber 是否还有还未执行的 useEffect,如果有会再次执行 flushPassiveEft 函数 |
|
|
|
- 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 中使用 |
|
|
|
- commitRootImpl 中有许多与 Interaction 相关的逻辑,这些逻辑和 React 的性能追踪有关,会在 React DevTool 中使用 |
|
|
|