@@ -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