Disable strict effects for legacy roots (again) (#21591)
Brian Vaughn committed
May 31, 2021 at 10:05 UTC
28625c6f45423e6edc5ca0e2932281769c0d431e
4 files changed
+10
-10
packages/react-reconciler/src/ReactFiber.new.js
+5
-1
@@ -492,7 +492,11 @@ export function createFiberFromTypeAndProps(
492
break;
493
case REACT_STRICT_MODE_TYPE:
494
fiberTag = Mode;
495
- mode |= StrictLegacyMode | StrictEffectsMode;
495
+ mode |= StrictLegacyMode;
496
+ if (enableStrictEffects && (mode & ConcurrentMode) !== NoMode) {
497
+ // Strict effects should never run on legacy roots
498
+ mode |= StrictEffectsMode;
499
+ }
500
break;
501
case REACT_PROFILER_TYPE:
502
return createFiberFromProfiler(pendingProps, mode, lanes, key);
packages/react-reconciler/src/ReactFiber.old.js
+5
-1
@@ -492,7 +492,11 @@ export function createFiberFromTypeAndProps(
492
break;
493
case REACT_STRICT_MODE_TYPE:
494
fiberTag = Mode;
495
- mode |= StrictLegacyMode | StrictEffectsMode;
495
+ mode |= StrictLegacyMode;
496
+ if (enableStrictEffects && (mode & ConcurrentMode) !== NoMode) {
497
+ // Strict effects should never run on legacy roots
498
+ mode |= StrictEffectsMode;
499
+ }
500
break;
501
case REACT_PROFILER_TYPE:
502
return createFiberFromProfiler(pendingProps, mode, lanes, key);
packages/react-reconciler/src/ReactFiberClassComponent.new.js
-4
@@ -923,7 +923,6 @@ function mountClassInstance(
923
enableStrictEffects &&
924
(workInProgress.mode & StrictEffectsMode) !== NoMode
925
) {
926
- // Never double-invoke effects for legacy roots.
926
fiberFlags |= MountLayoutDev;
927
}
928
workInProgress.flags |= fiberFlags;
@@ -1005,7 +1004,6 @@ function resumeMountClassInstance(
1004
enableStrictEffects &&
1005
(workInProgress.mode & StrictEffectsMode) !== NoMode
1006
) {
1008
- // Never double-invoke effects for legacy roots.
1007
fiberFlags |= MountLayoutDev;
1008
}
1009
workInProgress.flags |= fiberFlags;
@@ -1060,7 +1058,6 @@ function resumeMountClassInstance(
1058
enableStrictEffects &&
1059
(workInProgress.mode & StrictEffectsMode) !== NoMode
1060
) {
1063
- // Never double-invoke effects for legacy roots.
1061
fiberFlags |= MountLayoutDev;
1062
}
1063
workInProgress.flags |= fiberFlags;
@@ -1078,7 +1075,6 @@ function resumeMountClassInstance(
1075
enableStrictEffects &&
1076
(workInProgress.mode & StrictEffectsMode) !== NoMode
1077
) {
1081
- // Never double-invoke effects for legacy roots.
1078
fiberFlags |= MountLayoutDev;
1079
}
1080
workInProgress.flags |= fiberFlags;
packages/react-reconciler/src/ReactFiberClassComponent.old.js
-4
@@ -923,7 +923,6 @@ function mountClassInstance(
923
enableStrictEffects &&
924
(workInProgress.mode & StrictEffectsMode) !== NoMode
925
) {
926
- // Never double-invoke effects for legacy roots.
926
fiberFlags |= MountLayoutDev;
927
}
928
workInProgress.flags |= fiberFlags;
@@ -1005,7 +1004,6 @@ function resumeMountClassInstance(
1004
enableStrictEffects &&
1005
(workInProgress.mode & StrictEffectsMode) !== NoMode
1006
) {
1008
- // Never double-invoke effects for legacy roots.
1007
fiberFlags |= MountLayoutDev;
1008
}
1009
workInProgress.flags |= fiberFlags;
@@ -1060,7 +1058,6 @@ function resumeMountClassInstance(
1058
enableStrictEffects &&
1059
(workInProgress.mode & StrictEffectsMode) !== NoMode
1060
) {
1063
- // Never double-invoke effects for legacy roots.
1061
fiberFlags |= MountLayoutDev;
1062
}
1063
workInProgress.flags |= fiberFlags;
@@ -1078,7 +1075,6 @@ function resumeMountClassInstance(
1075
enableStrictEffects &&
1076
(workInProgress.mode & StrictEffectsMode) !== NoMode
1077
) {
1081
- // Never double-invoke effects for legacy roots.
1078
fiberFlags |= MountLayoutDev;
1079
}
1080
workInProgress.flags |= fiberFlags;