Skip to content

Commit 64ddef4

Browse files
authored
Revert "Remove onScroll bubbling flag (#19535)" (#19655)
This reverts commit e9721e1.
1 parent dd651df commit 64ddef4

12 files changed

+45
-14
lines changed

packages/react-dom/src/__tests__/ReactDOMEventListener-test.js

+17-6
Original file line numberDiff line numberDiff line change
@@ -712,12 +712,23 @@ describe('ReactDOMEventListener', () => {
712712
bubbles: false,
713713
}),
714714
);
715-
expect(log).toEqual([
716-
['capture','grand'],
717-
['capture','parent'],
718-
['capture','child'],
719-
['bubble','child'],
720-
]);
715+
if(gate(flags=>flags.disableOnScrollBubbling)){
716+
expect(log).toEqual([
717+
['capture','grand'],
718+
['capture','parent'],
719+
['capture','child'],
720+
['bubble','child'],
721+
]);
722+
}else{
723+
expect(log).toEqual([
724+
['capture','grand'],
725+
['capture','parent'],
726+
['capture','child'],
727+
['bubble','child'],
728+
['bubble','parent'],
729+
['bubble','grand'],
730+
]);
731+
}
721732
}finally{
722733
document.body.removeChild(container);
723734
}

packages/react-dom/src/__tests__/ReactDOMEventPropagation-test.js

+6
Original file line numberDiff line numberDiff line change
@@ -1225,6 +1225,12 @@ describe('ReactDOMEventListener', () => {
12251225
});
12261226

12271227
describe('non-bubbling events that do not bubble in React',()=>{
1228+
// This test will fail outside of the no-bubbling flag
1229+
// because its bubbling emulation is currently broken.
1230+
// In particular, if the target itself doesn't have
1231+
// a handler, it will not emulate bubbling correctly.
1232+
// Instead of fixing this, we'll just turn this flag on.
1233+
// @gate disableOnScrollBubbling
12281234
it('onScroll',()=>{
12291235
testNonBubblingEvent({
12301236
type: 'div',

packages/react-dom/src/events/plugins/SimpleEventPlugin.js

+13-8
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,10 @@ import {IS_EVENT_HANDLE_NON_MANAGED_NODE} from '../EventSystemFlags';
4747
importgetEventCharCodefrom'../getEventCharCode';
4848
import{IS_CAPTURE_PHASE}from'../EventSystemFlags';
4949

50-
import{enableCreateEventHandleAPI}from'shared/ReactFeatureFlags';
50+
import{
51+
enableCreateEventHandleAPI,
52+
disableOnScrollBubbling,
53+
}from'shared/ReactFeatureFlags';
5154

5255
functionextractEvents(
5356
dispatchQueue: DispatchQueue,
@@ -182,13 +185,15 @@ function extractEvents(
182185
// In the past, React has always bubbled them, but this can be surprising.
183186
// We're going to try aligning closer to the browser behavior by not bubbling
184187
// them in React either. We'll start by not bubbling onScroll, and then expand.
185-
constaccumulateTargetOnly=
186-
!inCapturePhase&&
187-
// TODO: ideally, we'd eventually add all events from
188-
// nonDelegatedEvents list in DOMPluginEventSystem.
189-
// Then we can remove this special list.
190-
// This is a breaking change that can wait until React 18.
191-
domEventName==='scroll';
188+
letaccumulateTargetOnly=false;
189+
if(disableOnScrollBubbling){
190+
accumulateTargetOnly=
191+
!inCapturePhase&&
192+
// TODO: ideally, we'd eventually add all events from
193+
// nonDelegatedEvents list in DOMPluginEventSystem.
194+
// Then we can remove this special list.
195+
domEventName==='scroll';
196+
}
192197

193198
accumulateSinglePhaseListeners(
194199
targetInst,

packages/shared/ReactFeatureFlags.js

+1
Original file line numberDiff line numberDiff line change
@@ -135,3 +135,4 @@ export const enableDiscreteEventFlushingChange = false;
135135

136136
// https://github.com/facebook/react/pull/19654
137137
exportconstenablePassiveEventIntervention=true;
138+
exportconstdisableOnScrollBubbling=true;

packages/shared/forks/ReactFeatureFlags.native-fb.js

+1
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ export const enableComponentStackLocations = false;
4444
exportconstenableLegacyFBSupport=false;
4545
exportconstenableFilterEmptyStringAttributesDOM=false;
4646
exportconstskipUnmountedBoundaries=false;
47+
exportconstdisableOnScrollBubbling=true;
4748

4849
exportconstenableNewReconciler=false;
4950
exportconstdeferRenderPhaseUpdateToNextBatch=true;

packages/shared/forks/ReactFeatureFlags.native-oss.js

+1
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ export const enableComponentStackLocations = false;
4343
exportconstenableLegacyFBSupport=false;
4444
exportconstenableFilterEmptyStringAttributesDOM=false;
4545
exportconstskipUnmountedBoundaries=false;
46+
exportconstdisableOnScrollBubbling=true;
4647

4748
exportconstenableNewReconciler=false;
4849
exportconstdeferRenderPhaseUpdateToNextBatch=true;

packages/shared/forks/ReactFeatureFlags.test-renderer.js

+1
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ export const enableComponentStackLocations = true;
4343
exportconstenableLegacyFBSupport=false;
4444
exportconstenableFilterEmptyStringAttributesDOM=false;
4545
exportconstskipUnmountedBoundaries=false;
46+
exportconstdisableOnScrollBubbling=true;
4647

4748
exportconstenableNewReconciler=false;
4849
exportconstdeferRenderPhaseUpdateToNextBatch=true;

packages/shared/forks/ReactFeatureFlags.test-renderer.www.js

+1
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ export const enableComponentStackLocations = true;
4343
exportconstenableLegacyFBSupport=false;
4444
exportconstenableFilterEmptyStringAttributesDOM=false;
4545
exportconstskipUnmountedBoundaries=false;
46+
exportconstdisableOnScrollBubbling=true;
4647

4748
exportconstenableNewReconciler=false;
4849
exportconstdeferRenderPhaseUpdateToNextBatch=true;

packages/shared/forks/ReactFeatureFlags.testing.js

+1
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ export const enableComponentStackLocations = true;
4343
exportconstenableLegacyFBSupport=false;
4444
exportconstenableFilterEmptyStringAttributesDOM=false;
4545
exportconstskipUnmountedBoundaries=false;
46+
exportconstdisableOnScrollBubbling=true;
4647

4748
exportconstenableNewReconciler=false;
4849
exportconstdeferRenderPhaseUpdateToNextBatch=true;

packages/shared/forks/ReactFeatureFlags.testing.www.js

+1
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ export const enableComponentStackLocations = true;
4343
exportconstenableLegacyFBSupport=!__EXPERIMENTAL__;
4444
exportconstenableFilterEmptyStringAttributesDOM=false;
4545
exportconstskipUnmountedBoundaries=__EXPERIMENTAL__;
46+
exportconstdisableOnScrollBubbling=true;
4647

4748
exportconstenableNewReconciler=false;
4849
exportconstdeferRenderPhaseUpdateToNextBatch=true;

packages/shared/forks/ReactFeatureFlags.www-dynamic.js

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ export const enableLegacyFBSupport = __VARIANT__;
2020
exportconstdecoupleUpdatePriorityFromScheduler=__VARIANT__;
2121
exportconstskipUnmountedBoundaries=__VARIANT__;
2222
exportconstenablePassiveEventIntervention=__VARIANT__;
23+
exportconstdisableOnScrollBubbling=__VARIANT__;
2324

2425
// Enable this flag to help with concurrent mode debugging.
2526
// It logs information to the console about React scheduling, rendering, and commit phases.

packages/shared/forks/ReactFeatureFlags.www.js

+1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ export const {
2828
enableDebugTracing,
2929
skipUnmountedBoundaries,
3030
enablePassiveEventIntervention,
31+
disableOnScrollBubbling,
3132
}=dynamicFeatureFlags;
3233

3334
// On WWW, __EXPERIMENTAL__ is used for a new modern build.

0 commit comments

Comments
 (0)
close