Home / Function/ recursivelyTraversePassiveUnmountEffects() — react Function Reference

recursivelyTraversePassiveUnmountEffects() — react Function Reference

Architecture documentation for the recursivelyTraversePassiveUnmountEffects() function in ReactFiberCommitWork.js from the react codebase.

Entity Profile

Dependency Diagram

graph TD
  e3c426a6_d017_fba5_0e94_3a1169983c80["recursivelyTraversePassiveUnmountEffects()"]
  e0fbfbd5_47b0_a489_0b36_bbfad9245544["ReactFiberCommitWork.js"]
  e3c426a6_d017_fba5_0e94_3a1169983c80 -->|defined in| e0fbfbd5_47b0_a489_0b36_bbfad9245544
  8ece8c7a_ae72_8f82_6cb2_654f8dc2bc90["commitPassiveUnmountOnFiber()"]
  8ece8c7a_ae72_8f82_6cb2_654f8dc2bc90 -->|calls| e3c426a6_d017_fba5_0e94_3a1169983c80
  4f76ed87_f151_2295_8bb4_c7b5dfe010a2["pushComponentEffectStart()"]
  e3c426a6_d017_fba5_0e94_3a1169983c80 -->|calls| 4f76ed87_f151_2295_8bb4_c7b5dfe010a2
  729871c3_3107_8e90_f4db_d567db865b85["commitPassiveUnmountEffectsInsideOfDeletedTree_begin()"]
  e3c426a6_d017_fba5_0e94_3a1169983c80 -->|calls| 729871c3_3107_8e90_f4db_d567db865b85
  ff9409a2_b556_06af_85c9_ee748a528d80["popComponentEffectStart()"]
  e3c426a6_d017_fba5_0e94_3a1169983c80 -->|calls| ff9409a2_b556_06af_85c9_ee748a528d80
  0aa36201_b90a_3656_4a51_312954ee1f8a["detachAlternateSiblings()"]
  e3c426a6_d017_fba5_0e94_3a1169983c80 -->|calls| 0aa36201_b90a_3656_4a51_312954ee1f8a
  8ece8c7a_ae72_8f82_6cb2_654f8dc2bc90["commitPassiveUnmountOnFiber()"]
  e3c426a6_d017_fba5_0e94_3a1169983c80 -->|calls| 8ece8c7a_ae72_8f82_6cb2_654f8dc2bc90
  style e3c426a6_d017_fba5_0e94_3a1169983c80 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/react-reconciler/src/ReactFiberCommitWork.js lines 4799–4844

function recursivelyTraversePassiveUnmountEffects(parentFiber: Fiber): void {
  // Deletions effects can be scheduled on any fiber type. They need to happen
  // before the children effects have fired.
  const deletions = parentFiber.deletions;

  if ((parentFiber.flags & ChildDeletion) !== NoFlags) {
    if (deletions !== null) {
      for (let i = 0; i < deletions.length; i++) {
        const childToDelete = deletions[i];
        const prevEffectStart = pushComponentEffectStart();
        // TODO: Convert this to use recursion
        nextEffect = childToDelete;
        commitPassiveUnmountEffectsInsideOfDeletedTree_begin(
          childToDelete,
          parentFiber,
        );
        if (
          enableProfilerTimer &&
          enableProfilerCommitHooks &&
          enableComponentPerformanceTrack &&
          (childToDelete.mode & ProfileMode) !== NoMode &&
          componentEffectStartTime >= 0 &&
          componentEffectEndTime >= 0 &&
          componentEffectEndTime - componentEffectStartTime > 0.05
        ) {
          logComponentUnmount(
            childToDelete,
            componentEffectStartTime,
            componentEffectEndTime,
          );
        }
        popComponentEffectStart(prevEffectStart);
      }
    }
    detachAlternateSiblings(parentFiber);
  }

  // TODO: Split PassiveMask into separate masks for mount and unmount?
  if (parentFiber.subtreeFlags & PassiveMask) {
    let child = parentFiber.child;
    while (child !== null) {
      commitPassiveUnmountOnFiber(child);
      child = child.sibling;
    }
  }
}

Domain

Subdomains

Frequently Asked Questions

What does recursivelyTraversePassiveUnmountEffects() do?
recursivelyTraversePassiveUnmountEffects() is a function in the react codebase, defined in packages/react-reconciler/src/ReactFiberCommitWork.js.
Where is recursivelyTraversePassiveUnmountEffects() defined?
recursivelyTraversePassiveUnmountEffects() is defined in packages/react-reconciler/src/ReactFiberCommitWork.js at line 4799.
What does recursivelyTraversePassiveUnmountEffects() call?
recursivelyTraversePassiveUnmountEffects() calls 5 function(s): commitPassiveUnmountEffectsInsideOfDeletedTree_begin, commitPassiveUnmountOnFiber, detachAlternateSiblings, popComponentEffectStart, pushComponentEffectStart.
What calls recursivelyTraversePassiveUnmountEffects()?
recursivelyTraversePassiveUnmountEffects() is called by 1 function(s): commitPassiveUnmountOnFiber.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free