commitAtomicPassiveEffects() — react Function Reference
Architecture documentation for the commitAtomicPassiveEffects() function in ReactFiberCommitWork.js from the react codebase.
Entity Profile
Dependency Diagram
graph TD 4ec30fe0_df47_e5db_0cf4_f03d14801fdc["commitAtomicPassiveEffects()"] e0fbfbd5_47b0_a489_0b36_bbfad9245544["ReactFiberCommitWork.js"] 4ec30fe0_df47_e5db_0cf4_f03d14801fdc -->|defined in| e0fbfbd5_47b0_a489_0b36_bbfad9245544 317d36b2_6d53_a2b7_dca2_deda0b86219e["recursivelyTraverseAtomicPassiveEffects()"] 317d36b2_6d53_a2b7_dca2_deda0b86219e -->|calls| 4ec30fe0_df47_e5db_0cf4_f03d14801fdc 317d36b2_6d53_a2b7_dca2_deda0b86219e["recursivelyTraverseAtomicPassiveEffects()"] 4ec30fe0_df47_e5db_0cf4_f03d14801fdc -->|calls| 317d36b2_6d53_a2b7_dca2_deda0b86219e 2d036adb_abc2_6b17_a780_276a2848fe77["commitOffscreenPassiveMountEffects()"] 4ec30fe0_df47_e5db_0cf4_f03d14801fdc -->|calls| 2d036adb_abc2_6b17_a780_276a2848fe77 b2abac0a_b636_f5de_817a_0aad16ff6bc1["commitCachePassiveMountEffect()"] 4ec30fe0_df47_e5db_0cf4_f03d14801fdc -->|calls| b2abac0a_b636_f5de_817a_0aad16ff6bc1 style 4ec30fe0_df47_e5db_0cf4_f03d14801fdc fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/react-reconciler/src/ReactFiberCommitWork.js lines 4504–4580
function commitAtomicPassiveEffects(
finishedRoot: FiberRoot,
finishedWork: Fiber,
committedLanes: Lanes,
committedTransitions: Array<Transition> | null,
endTime: number, // Profiling-only. The start time of the next Fiber or root completion.
) {
const prevDeepEquality = pushDeepEquality();
// If this component rendered in Profiling mode (DEV or in Profiler component) then log its
// render time. A render can happen even if the subtree is offscreen.
if (
enableProfilerTimer &&
enableComponentPerformanceTrack &&
(finishedWork.mode & ProfileMode) !== NoMode &&
((finishedWork.actualStartTime: any): number) > 0 &&
(finishedWork.flags & PerformedWork) !== NoFlags
) {
logComponentRender(
finishedWork,
((finishedWork.actualStartTime: any): number),
endTime,
inHydratedSubtree,
committedLanes,
);
}
// "Atomic" effects are ones that need to fire on every commit, even during
// pre-rendering. We call this function when traversing a hidden tree whose
// regular effects are currently disconnected.
const flags = finishedWork.flags;
switch (finishedWork.tag) {
case OffscreenComponent: {
recursivelyTraverseAtomicPassiveEffects(
finishedRoot,
finishedWork,
committedLanes,
committedTransitions,
endTime,
);
if (flags & Passive) {
// TODO: Pass `current` as argument to this function
const current = finishedWork.alternate;
const instance: OffscreenInstance = finishedWork.stateNode;
commitOffscreenPassiveMountEffects(current, finishedWork, instance);
}
break;
}
case CacheComponent: {
recursivelyTraverseAtomicPassiveEffects(
finishedRoot,
finishedWork,
committedLanes,
committedTransitions,
endTime,
);
if (flags & Passive) {
// TODO: Pass `current` as argument to this function
const current = finishedWork.alternate;
commitCachePassiveMountEffect(current, finishedWork);
}
break;
}
default: {
recursivelyTraverseAtomicPassiveEffects(
finishedRoot,
finishedWork,
committedLanes,
committedTransitions,
endTime,
);
break;
}
}
popDeepEquality(prevDeepEquality);
}
Domain
Subdomains
Calls
Source
Frequently Asked Questions
What does commitAtomicPassiveEffects() do?
commitAtomicPassiveEffects() is a function in the react codebase, defined in packages/react-reconciler/src/ReactFiberCommitWork.js.
Where is commitAtomicPassiveEffects() defined?
commitAtomicPassiveEffects() is defined in packages/react-reconciler/src/ReactFiberCommitWork.js at line 4504.
What does commitAtomicPassiveEffects() call?
commitAtomicPassiveEffects() calls 3 function(s): commitCachePassiveMountEffect, commitOffscreenPassiveMountEffects, recursivelyTraverseAtomicPassiveEffects.
What calls commitAtomicPassiveEffects()?
commitAtomicPassiveEffects() is called by 1 function(s): recursivelyTraverseAtomicPassiveEffects.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free