Skip to content

Commit 7cc9fca

Browse files
committed
Address feedback
Fix
1 parent 944b8ff commit 7cc9fca

File tree

2 files changed

+19
-13
lines changed

2 files changed

+19
-13
lines changed

packages/react-dom/src/events/DOMModernPluginEventSystem.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ import {
6767
TOP_RATE_CHANGE,
6868
TOP_PROGRESS,
6969
TOP_PLAYING,
70+
TOP_CLICK,
7071
} from './DOMTopLevelEventTypes';
7172
import {
7273
getClosestInstanceFromNode,
@@ -229,18 +230,18 @@ function willDeferLaterForLegacyFBSupport(
229230
topLevelType: DOMTopLevelEventType,
230231
targetContainer: EventTarget,
231232
): boolean {
232-
if ((topLevelType: any) !== 'click') {
233+
if (topLevelType !== TOP_CLICK) {
233234
return false;
234235
}
235236
// We defer all click events with legacy FB support mode on.
236237
// This means we add a one time event listener to trigger
237238
// after the FB delegated listeners fire.
238-
const legacyFBSupport = true;
239+
const isDeferredListenerForLegacyFBSupport = true;
239240
addTrappedEventListener(
240241
targetContainer,
241242
topLevelType,
242243
false,
243-
legacyFBSupport,
244+
isDeferredListenerForLegacyFBSupport,
244245
);
245246
return true;
246247
}
@@ -290,7 +291,12 @@ export function dispatchEventForPluginEventSystem(
290291
// time event listener so we can defer the event.
291292
if (
292293
enableLegacyFBSupport &&
294+
// We do not want to defer if the event system has already been
295+
// set to LEGACY_FB_SUPPORT. LEGACY_FB_SUPPORT only gets set when
296+
// we call willDeferLaterForLegacyFBSupport, thus not bailing out
297+
// will result in endless cycles like an infinite loop.
293298
(eventSystemFlags & LEGACY_FB_SUPPORT) === 0 &&
299+
// We also don't want to defer during event replaying.
294300
(eventSystemFlags & IS_REPLAYED) === 0 &&
295301
willDeferLaterForLegacyFBSupport(topLevelType, targetContainer)
296302
) {

packages/react-dom/src/events/ReactDOMEventListener.js

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ export function addTrappedEventListener(
133133
targetContainer: EventTarget,
134134
topLevelType: DOMTopLevelEventType,
135135
capture: boolean,
136-
legacyFBSupport?: boolean,
136+
isDeferredListenerForLegacyFBSupport?: boolean,
137137
passive?: boolean,
138138
priority?: EventPriority,
139139
): any => void {
@@ -161,7 +161,7 @@ export function addTrappedEventListener(
161161
passive = false;
162162
}
163163
const eventSystemFlags =
164-
enableLegacyFBSupport && legacyFBSupport
164+
enableLegacyFBSupport && isDeferredListenerForLegacyFBSupport
165165
? PLUGIN_EVENT_SYSTEM | LEGACY_FB_SUPPORT
166166
: PLUGIN_EVENT_SYSTEM;
167167

@@ -182,8 +182,8 @@ export function addTrappedEventListener(
182182
targetContainer = document;
183183
}
184184

185-
const targetContainerToUse =
186-
enableLegacyFBSupport && legacyFBSupport
185+
targetContainer =
186+
enableLegacyFBSupport && isDeferredListenerForLegacyFBSupport
187187
? (targetContainer: any).ownerDocument
188188
: targetContainer;
189189

@@ -201,14 +201,14 @@ export function addTrappedEventListener(
201201
// browsers do not support this today, and given this is
202202
// to support legacy code patterns, it's likely they'll
203203
// need support for such browsers.
204-
if (enableLegacyFBSupport && legacyFBSupport) {
204+
if (enableLegacyFBSupport && isDeferredListenerForLegacyFBSupport) {
205205
const originalListener = listener;
206206
listener = function(...p) {
207207
try {
208208
return originalListener.apply(this, p);
209209
} finally {
210210
removeEventListener(
211-
targetContainerToUse,
211+
targetContainer,
212212
rawEventName,
213213
unsubscribeListener,
214214
capture,
@@ -220,14 +220,14 @@ export function addTrappedEventListener(
220220
if (enableUseEventAPI && passive !== undefined) {
221221
// This is only used with passive is either true or false.
222222
unsubscribeListener = addEventCaptureListenerWithPassiveFlag(
223-
targetContainerToUse,
223+
targetContainer,
224224
rawEventName,
225225
listener,
226226
passive,
227227
);
228228
} else {
229229
unsubscribeListener = addEventCaptureListener(
230-
targetContainerToUse,
230+
targetContainer,
231231
rawEventName,
232232
listener,
233233
);
@@ -236,14 +236,14 @@ export function addTrappedEventListener(
236236
if (enableUseEventAPI && passive !== undefined) {
237237
// This is only used with passive is either true or false.
238238
unsubscribeListener = addEventBubbleListenerWithPassiveFlag(
239-
targetContainerToUse,
239+
targetContainer,
240240
rawEventName,
241241
listener,
242242
passive,
243243
);
244244
} else {
245245
unsubscribeListener = addEventBubbleListener(
246-
targetContainerToUse,
246+
targetContainer,
247247
rawEventName,
248248
listener,
249249
);

0 commit comments

Comments
 (0)