From 28625c6f45423e6edc5ca0e2932281769c0d431e Mon Sep 17 00:00:00 2001 From: Brian Vaughn Date: Mon, 31 May 2021 10:05:50 -0700 Subject: [PATCH] Disable strict effects for legacy roots (again) (#21591) --- packages/react-reconciler/src/ReactFiber.new.js | 6 +++++- packages/react-reconciler/src/ReactFiber.old.js | 6 +++++- .../react-reconciler/src/ReactFiberClassComponent.new.js | 4 ---- .../react-reconciler/src/ReactFiberClassComponent.old.js | 4 ---- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/react-reconciler/src/ReactFiber.new.js b/packages/react-reconciler/src/ReactFiber.new.js index 2ea25195a7c0..a18514c50c0f 100644 --- a/packages/react-reconciler/src/ReactFiber.new.js +++ b/packages/react-reconciler/src/ReactFiber.new.js @@ -492,7 +492,11 @@ export function createFiberFromTypeAndProps( break; case REACT_STRICT_MODE_TYPE: fiberTag = Mode; - mode |= StrictLegacyMode | StrictEffectsMode; + mode |= StrictLegacyMode; + if (enableStrictEffects && (mode & ConcurrentMode) !== NoMode) { + // Strict effects should never run on legacy roots + mode |= StrictEffectsMode; + } break; case REACT_PROFILER_TYPE: return createFiberFromProfiler(pendingProps, mode, lanes, key); diff --git a/packages/react-reconciler/src/ReactFiber.old.js b/packages/react-reconciler/src/ReactFiber.old.js index 1e30bb9c7a3a..4fbbb5a00efc 100644 --- a/packages/react-reconciler/src/ReactFiber.old.js +++ b/packages/react-reconciler/src/ReactFiber.old.js @@ -492,7 +492,11 @@ export function createFiberFromTypeAndProps( break; case REACT_STRICT_MODE_TYPE: fiberTag = Mode; - mode |= StrictLegacyMode | StrictEffectsMode; + mode |= StrictLegacyMode; + if (enableStrictEffects && (mode & ConcurrentMode) !== NoMode) { + // Strict effects should never run on legacy roots + mode |= StrictEffectsMode; + } break; case REACT_PROFILER_TYPE: return createFiberFromProfiler(pendingProps, mode, lanes, key); diff --git a/packages/react-reconciler/src/ReactFiberClassComponent.new.js b/packages/react-reconciler/src/ReactFiberClassComponent.new.js index 44b9db7aacb2..c464b6c3bf41 100644 --- a/packages/react-reconciler/src/ReactFiberClassComponent.new.js +++ b/packages/react-reconciler/src/ReactFiberClassComponent.new.js @@ -923,7 +923,6 @@ function mountClassInstance( enableStrictEffects && (workInProgress.mode & StrictEffectsMode) !== NoMode ) { - // Never double-invoke effects for legacy roots. fiberFlags |= MountLayoutDev; } workInProgress.flags |= fiberFlags; @@ -1005,7 +1004,6 @@ function resumeMountClassInstance( enableStrictEffects && (workInProgress.mode & StrictEffectsMode) !== NoMode ) { - // Never double-invoke effects for legacy roots. fiberFlags |= MountLayoutDev; } workInProgress.flags |= fiberFlags; @@ -1060,7 +1058,6 @@ function resumeMountClassInstance( enableStrictEffects && (workInProgress.mode & StrictEffectsMode) !== NoMode ) { - // Never double-invoke effects for legacy roots. fiberFlags |= MountLayoutDev; } workInProgress.flags |= fiberFlags; @@ -1078,7 +1075,6 @@ function resumeMountClassInstance( enableStrictEffects && (workInProgress.mode & StrictEffectsMode) !== NoMode ) { - // Never double-invoke effects for legacy roots. fiberFlags |= MountLayoutDev; } workInProgress.flags |= fiberFlags; diff --git a/packages/react-reconciler/src/ReactFiberClassComponent.old.js b/packages/react-reconciler/src/ReactFiberClassComponent.old.js index ab2bb4379678..adb616c6262b 100644 --- a/packages/react-reconciler/src/ReactFiberClassComponent.old.js +++ b/packages/react-reconciler/src/ReactFiberClassComponent.old.js @@ -923,7 +923,6 @@ function mountClassInstance( enableStrictEffects && (workInProgress.mode & StrictEffectsMode) !== NoMode ) { - // Never double-invoke effects for legacy roots. fiberFlags |= MountLayoutDev; } workInProgress.flags |= fiberFlags; @@ -1005,7 +1004,6 @@ function resumeMountClassInstance( enableStrictEffects && (workInProgress.mode & StrictEffectsMode) !== NoMode ) { - // Never double-invoke effects for legacy roots. fiberFlags |= MountLayoutDev; } workInProgress.flags |= fiberFlags; @@ -1060,7 +1058,6 @@ function resumeMountClassInstance( enableStrictEffects && (workInProgress.mode & StrictEffectsMode) !== NoMode ) { - // Never double-invoke effects for legacy roots. fiberFlags |= MountLayoutDev; } workInProgress.flags |= fiberFlags; @@ -1078,7 +1075,6 @@ function resumeMountClassInstance( enableStrictEffects && (workInProgress.mode & StrictEffectsMode) !== NoMode ) { - // Never double-invoke effects for legacy roots. fiberFlags |= MountLayoutDev; } workInProgress.flags |= fiberFlags;