Home / Function/ reconnectPassiveEffects() — react Function Reference

reconnectPassiveEffects() — react Function Reference

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

Entity Profile

Dependency Diagram

graph TD
  c3c0c008_f543_54ba_5f17_334454e50793["reconnectPassiveEffects()"]
  e0fbfbd5_47b0_a489_0b36_bbfad9245544["ReactFiberCommitWork.js"]
  c3c0c008_f543_54ba_5f17_334454e50793 -->|defined in| e0fbfbd5_47b0_a489_0b36_bbfad9245544
  ea4de162_c0d1_f2e2_cc55_bbca4c7974d7["recursivelyTraverseReconnectPassiveEffects()"]
  ea4de162_c0d1_f2e2_cc55_bbca4c7974d7 -->|calls| c3c0c008_f543_54ba_5f17_334454e50793
  4f76ed87_f151_2295_8bb4_c7b5dfe010a2["pushComponentEffectStart()"]
  c3c0c008_f543_54ba_5f17_334454e50793 -->|calls| 4f76ed87_f151_2295_8bb4_c7b5dfe010a2
  da570743_1675_9fe9_6425_06d6a84f49ba["pushComponentEffectDuration()"]
  c3c0c008_f543_54ba_5f17_334454e50793 -->|calls| da570743_1675_9fe9_6425_06d6a84f49ba
  ea4de162_c0d1_f2e2_cc55_bbca4c7974d7["recursivelyTraverseReconnectPassiveEffects()"]
  c3c0c008_f543_54ba_5f17_334454e50793 -->|calls| ea4de162_c0d1_f2e2_cc55_bbca4c7974d7
  a91297ff_1cc6_aa85_0c1f_efacbbff1de9["commitHookPassiveMountEffects()"]
  c3c0c008_f543_54ba_5f17_334454e50793 -->|calls| a91297ff_1cc6_aa85_0c1f_efacbbff1de9
  2d036adb_abc2_6b17_a780_276a2848fe77["commitOffscreenPassiveMountEffects()"]
  c3c0c008_f543_54ba_5f17_334454e50793 -->|calls| 2d036adb_abc2_6b17_a780_276a2848fe77
  317d36b2_6d53_a2b7_dca2_deda0b86219e["recursivelyTraverseAtomicPassiveEffects()"]
  c3c0c008_f543_54ba_5f17_334454e50793 -->|calls| 317d36b2_6d53_a2b7_dca2_deda0b86219e
  b2abac0a_b636_f5de_817a_0aad16ff6bc1["commitCachePassiveMountEffect()"]
  c3c0c008_f543_54ba_5f17_334454e50793 -->|calls| b2abac0a_b636_f5de_817a_0aad16ff6bc1
  814a1810_d6b9_6098_a8fb_fd5562387064["commitTracingMarkerPassiveMountEffect()"]
  c3c0c008_f543_54ba_5f17_334454e50793 -->|calls| 814a1810_d6b9_6098_a8fb_fd5562387064
  style c3c0c008_f543_54ba_5f17_334454e50793 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/react-reconciler/src/ReactFiberCommitWork.js lines 4234–4430

export function reconnectPassiveEffects(
  finishedRoot: FiberRoot,
  finishedWork: Fiber,
  committedLanes: Lanes,
  committedTransitions: Array<Transition> | null,
  // This function visits both newly finished work and nodes that were re-used
  // from a previously committed tree. We cannot check non-static flags if the
  // node was reused.
  includeWorkInProgressEffects: boolean,
  endTime: number, // Profiling-only. The start time of the next Fiber or root completion.
) {
  const prevEffectStart = pushComponentEffectStart();
  const prevEffectDuration = pushComponentEffectDuration();
  const prevEffectErrors = pushComponentEffectErrors();
  const prevEffectDidSpawnUpdate = pushComponentEffectDidSpawnUpdate();
  const prevDeepEquality = pushDeepEquality();

  // If this component rendered in Profiling mode (DEV or in Profiler component) then log its
  // render time. We do this after the fact in the passive effect to avoid the overhead of this
  // getting in the way of the render characteristics and avoid the overhead of unwinding
  // uncommitted renders.
  if (
    enableProfilerTimer &&
    enableComponentPerformanceTrack &&
    includeWorkInProgressEffects &&
    (finishedWork.mode & ProfileMode) !== NoMode &&
    ((finishedWork.actualStartTime: any): number) > 0 &&
    (finishedWork.flags & PerformedWork) !== NoFlags
  ) {
    logComponentRender(
      finishedWork,
      ((finishedWork.actualStartTime: any): number),
      endTime,
      inHydratedSubtree,
      committedLanes,
    );
  }

  const flags = finishedWork.flags;
  switch (finishedWork.tag) {
    case FunctionComponent:
    case ForwardRef:
    case SimpleMemoComponent: {
      recursivelyTraverseReconnectPassiveEffects(
        finishedRoot,
        finishedWork,
        committedLanes,
        committedTransitions,
        includeWorkInProgressEffects,
        endTime,
      );
      // TODO: Check for PassiveStatic flag
      commitHookPassiveMountEffects(finishedWork, HookPassive);
      break;
    }
    // Unlike commitPassiveMountOnFiber, we don't need to handle HostRoot
    // because this function only visits nodes that are inside an
    // Offscreen fiber.
    // case HostRoot: {
    //  ...
    // }
    case LegacyHiddenComponent: {
      if (enableLegacyHidden) {
        recursivelyTraverseReconnectPassiveEffects(
          finishedRoot,
          finishedWork,
          committedLanes,
          committedTransitions,
          includeWorkInProgressEffects,
          endTime,
        );

        if (includeWorkInProgressEffects && flags & Passive) {
          // TODO: Pass `current` as argument to this function
          const current: Fiber | null = finishedWork.alternate;
          const instance: OffscreenInstance = finishedWork.stateNode;
          commitOffscreenPassiveMountEffects(current, finishedWork, instance);
        }
      }
      break;
    }

Domain

Subdomains

Frequently Asked Questions

What does reconnectPassiveEffects() do?
reconnectPassiveEffects() is a function in the react codebase, defined in packages/react-reconciler/src/ReactFiberCommitWork.js.
Where is reconnectPassiveEffects() defined?
reconnectPassiveEffects() is defined in packages/react-reconciler/src/ReactFiberCommitWork.js at line 4234.
What does reconnectPassiveEffects() call?
reconnectPassiveEffects() calls 8 function(s): commitCachePassiveMountEffect, commitHookPassiveMountEffects, commitOffscreenPassiveMountEffects, commitTracingMarkerPassiveMountEffect, pushComponentEffectDuration, pushComponentEffectStart, recursivelyTraverseAtomicPassiveEffects, recursivelyTraverseReconnectPassiveEffects.
What calls reconnectPassiveEffects()?
reconnectPassiveEffects() is called by 1 function(s): recursivelyTraverseReconnectPassiveEffects.

Analyze Your Own Codebase

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

Try Supermodel Free