Skip to content

Commit 9c2f26b

Browse files
committed
Refactor double invoking logic into single if/else statement
1 parent fc298f5 commit 9c2f26b

File tree

2 files changed

+28
-24
lines changed

2 files changed

+28
-24
lines changed

packages/react-reconciler/src/ReactFiberWorkLoop.new.js

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3186,19 +3186,21 @@ function doubleInvokeEffectsInDEV(
31863186
const isStrictModeFiber = fiber.type === REACT_STRICT_MODE_TYPE;
31873187
const isInStrictMode = parentIsInStrictMode || isStrictModeFiber;
31883188

3189-
if (fiber.flags & PlacementDEV || fiber.tag === OffscreenComponent) {
3189+
if (
3190+
isInStrictMode &&
3191+
// Check for newly mounted trees
3192+
(fiber.flags & PlacementDEV ||
3193+
// Check for trees that are going from hidden -> visible
3194+
(fiber.tag === OffscreenComponent &&
3195+
fiber.flags & Visibility &&
3196+
fiber.memoizedState === null))
3197+
) {
3198+
// Double invoke all the effects in this tree
31903199
setCurrentDebugFiberInDEV(fiber);
3191-
const isNotOffscreen = fiber.tag !== OffscreenComponent;
3192-
// Checks if Offscreen is being revealed. For all other components, evaluates to true.
3193-
const hasOffscreenBecomeVisible =
3194-
isNotOffscreen ||
3195-
(fiber.flags & Visibility && fiber.memoizedState === null);
3196-
if (isInStrictMode && hasOffscreenBecomeVisible) {
3197-
disappearLayoutEffects(fiber);
3198-
disconnectPassiveEffect(fiber);
3199-
reappearLayoutEffects(root, fiber.alternate, fiber, false);
3200-
reconnectPassiveEffects(root, fiber, NoLanes, null, false);
3201-
}
3200+
disappearLayoutEffects(fiber);
3201+
disconnectPassiveEffect(fiber);
3202+
reappearLayoutEffects(root, fiber.alternate, fiber, false);
3203+
reconnectPassiveEffects(root, fiber, NoLanes, null, false);
32023204
resetCurrentDebugFiberInDEV();
32033205
} else {
32043206
recursivelyTraverseAndDoubleInvokeEffectsInDEV(root, fiber, isInStrictMode);

packages/react-reconciler/src/ReactFiberWorkLoop.old.js

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3186,19 +3186,21 @@ function doubleInvokeEffectsInDEV(
31863186
const isStrictModeFiber = fiber.type === REACT_STRICT_MODE_TYPE;
31873187
const isInStrictMode = parentIsInStrictMode || isStrictModeFiber;
31883188

3189-
if (fiber.flags & PlacementDEV || fiber.tag === OffscreenComponent) {
3189+
if (
3190+
isInStrictMode &&
3191+
// Check for newly mounted trees
3192+
(fiber.flags & PlacementDEV ||
3193+
// Check for trees that are going from hidden -> visible
3194+
(fiber.tag === OffscreenComponent &&
3195+
fiber.flags & Visibility &&
3196+
fiber.memoizedState === null))
3197+
) {
3198+
// Double invoke all the effects in this tree
31903199
setCurrentDebugFiberInDEV(fiber);
3191-
const isNotOffscreen = fiber.tag !== OffscreenComponent;
3192-
// Checks if Offscreen is being revealed. For all other components, evaluates to true.
3193-
const hasOffscreenBecomeVisible =
3194-
isNotOffscreen ||
3195-
(fiber.flags & Visibility && fiber.memoizedState === null);
3196-
if (isInStrictMode && hasOffscreenBecomeVisible) {
3197-
disappearLayoutEffects(fiber);
3198-
disconnectPassiveEffect(fiber);
3199-
reappearLayoutEffects(root, fiber.alternate, fiber, false);
3200-
reconnectPassiveEffects(root, fiber, NoLanes, null, false);
3201-
}
3200+
disappearLayoutEffects(fiber);
3201+
disconnectPassiveEffect(fiber);
3202+
reappearLayoutEffects(root, fiber.alternate, fiber, false);
3203+
reconnectPassiveEffects(root, fiber, NoLanes, null, false);
32023204
resetCurrentDebugFiberInDEV();
32033205
} else {
32043206
recursivelyTraverseAndDoubleInvokeEffectsInDEV(root, fiber, isInStrictMode);

0 commit comments

Comments
 (0)