跳到主要内容

React Fiber 变更跟踪

一、作用

二、导出的变量

1. 根突变上下文

export let rootMutationContext: boolean = false;

1. 视图过渡变更上下文

export let viewTransitionMutationContext: boolean = false;

三、推送根突变上下文

export function pushRootMutationContext(): void {
if (enableDefaultTransitionIndicator) {
rootMutationContext = false;
}
if (enableViewTransition) {
viewTransitionMutationContext = false;
}
}

四、推送变更上下文

export function pushMutationContext(): boolean {
if (!enableViewTransition) {
return false;
}
const prev = viewTransitionMutationContext;
viewTransitionMutationContext = false;
return prev;
}

五、弹出变异上下文

export function popMutationContext(prev: boolean): void {
if (enableViewTransition) {
if (viewTransitionMutationContext) {
rootMutationContext = true;
}
viewTransitionMutationContext = prev;
}
}

六、跟踪宿主环境突变

export function trackHostMutation(): void {
// This is extremely hot function that must be inlined. Don't add more stuff.
// 这是一个必须内联的非常热门的函数。不要添加更多内容。
if (enableViewTransition) {
viewTransitionMutationContext = true;
} else if (enableDefaultTransitionIndicator) {
// We only set this if enableViewTransition is not on. Otherwise we track
// it on the viewTransitionMutationContext and collect it when we pop
// to avoid more than a single operation in this hot path.
//
// 只有在 enableViewTransition 没有开启时我们才会设置它。否则我们会
// 在 viewTransitionMutationContext 中跟踪它,并在回弹时收集它,以
// 避免在这个频繁执行的路径中出现多个操作。
rootMutationContext = true;
}
}