Skip to content

Commit 676f087

Browse files
authored
Reset currentEventTransitionLane after flushing sync work (#33159)
This keeps track of the transition lane allocated for this event. I want to be able to use the current one within sync work flushing to know which lane needs its loading indicator cleared. It's also a bit weird that transition work scheduled inside sync updates in the same event aren't entangled with other transitions in that event when `flushSync` is. Therefore this moves it to reset after flushing. It should have no impact. Just splitting it out into a separate PR for an abundance of caution. The only thing this might affect would be if the React internals throws and it doesn't reset after. But really it doesn't really have to reset and they're all entangled anyway.
1 parent 997c7bc commit 676f087

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

packages/react-reconciler/src/ReactFiberRootScheduler.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,6 @@ function processRootScheduleInMicrotask() {
257257
// preserve the scroll position of the previous page.
258258
syncTransitionLanes = currentEventTransitionLane;
259259
}
260-
currentEventTransitionLane = NoLane;
261260
}
262261

263262
const currentTime = now();
@@ -315,6 +314,9 @@ function processRootScheduleInMicrotask() {
315314
if (!hasPendingCommitEffects()) {
316315
flushSyncWorkAcrossRoots_impl(syncTransitionLanes, false);
317316
}
317+
318+
// Reset Event Transition Lane so that we allocate a new one next time.
319+
currentEventTransitionLane = NoLane;
318320
}
319321

320322
function scheduleTaskForRootDuringMicrotask(

0 commit comments

Comments
 (0)