Skip to content

Commit e52fa4c

Browse files
authored
Add early exit to strict mode (#25235)
1 parent f2e4ff0 commit e52fa4c

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

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

+5
Original file line numberDiff line numberDiff line change
@@ -3172,6 +3172,11 @@ function recursivelyTraverseAndDoubleInvokeEffectsInDEV(
31723172
parentFiber: Fiber,
31733173
isInStrictMode: boolean,
31743174
) {
3175+
if ((parentFiber.subtreeFlags & (PlacementDEV | Visibility)) === NoFlags) {
3176+
// Parent's descendants have already had effects double invoked.
3177+
// Early exit to avoid unnecessary tree traversal.
3178+
return;
3179+
}
31753180
let child = parentFiber.child;
31763181
while (child !== null) {
31773182
doubleInvokeEffectsInDEV(root, child, isInStrictMode);

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

+5
Original file line numberDiff line numberDiff line change
@@ -3172,6 +3172,11 @@ function recursivelyTraverseAndDoubleInvokeEffectsInDEV(
31723172
parentFiber: Fiber,
31733173
isInStrictMode: boolean,
31743174
) {
3175+
if ((parentFiber.subtreeFlags & (PlacementDEV | Visibility)) === NoFlags) {
3176+
// Parent's descendants have already had effects double invoked.
3177+
// Early exit to avoid unnecessary tree traversal.
3178+
return;
3179+
}
31753180
let child = parentFiber.child;
31763181
while (child !== null) {
31773182
doubleInvokeEffectsInDEV(root, child, isInStrictMode);

0 commit comments

Comments
 (0)