Revert useEvent PRs (#18438)
* Revert "ReactDOM.useEvent: enable on internal www and add inspection test (#18395)" This reverts commit e0ab1a429d178d86e13f073f8451d24033bc1838. * Revert "ReactDOM.useEvent: Add support for experimental scopes API (#18375)" This reverts commit a16b34974508cd23ce0844ad09a0e37a879d5591. * ReactDOM.useEvent: Add support for experimental scopes API
Andrew Clark committed
Mar 30, 2020 at 19:16 UTC
90e90ac8e0d16113b9566ef5feea3da11e5f4458
12 files changed
+48
-357
packages/react-debug-tools/src/ReactDebugHooks.js
+1
-5
@@ -15,7 +15,6 @@ import type {
15
ReactProviderType,
16
ReactEventResponder,
17
ReactEventResponderListener,
18
- ReactScopeMethods,
18
} from 'shared/ReactTypes';
19
import type {Fiber} from 'react-reconciler/src/ReactFiber';
20
import type {Hook, TimeoutConfig} from 'react-reconciler/src/ReactFiberHooks';
@@ -45,10 +44,7 @@ type HookLogEntry = {
44
45
type ReactDebugListenerMap = {|
46
clear: () => void,
48
- setListener: (
49
- target: EventTarget | ReactScopeMethods,
50
- callback: ?(Event) => void,
51
- ) => void,
47
+ setListener: (target: EventTarget, callback: ?(Event) => void) => void,
48
|};
49
50
let hookLog: Array<HookLogEntry> = [];
packages/react-debug-tools/src/__tests__/ReactHooksInspection-test.internal.js
-43
@@ -11,7 +11,6 @@
11
'use strict';
12
13
let React;
14
-let ReactDOM;
14
let ReactDebugTools;
15
16
describe('ReactHooksInspection', () => {
@@ -19,9 +18,7 @@ describe('ReactHooksInspection', () => {
18
jest.resetModules();
19
const ReactFeatureFlags = require('shared/ReactFeatureFlags');
20
ReactFeatureFlags.enableDeprecatedFlareAPI = true;
22
- ReactFeatureFlags.enableUseEventAPI = true;
21
React = require('react');
24
- ReactDOM = require('react-dom');
22
ReactDebugTools = require('react-debug-tools');
23
});
24
@@ -50,44 +47,4 @@ describe('ReactHooksInspection', () => {
47
},
48
]);
49
});
53
-
54
- it('should inspect a simple ReactDOM.useEvent hook', () => {
55
- let clickHandle;
56
- let ref;
57
-
58
- const effect = () => {
59
- clickHandle.setListener(ref.current, () => {});
60
- };
61
-
62
- function Foo(props) {
63
- ref = React.useRef(null);
64
- clickHandle = ReactDOM.unstable_useEvent('click');
65
- React.useEffect(effect);
66
- return <div ref={ref}>Hello world</div>;
67
- }
68
- let tree = ReactDebugTools.inspectHooks(Foo, {});
69
- expect(tree).toEqual([
70
- {
71
- isStateEditable: false,
72
- id: 0,
73
- name: 'Ref',
74
- subHooks: [],
75
- value: null,
76
- },
77
- {
78
- isStateEditable: false,
79
- id: 1,
80
- name: 'Event',
81
- value: {capture: false, passive: undefined, priority: 0, type: 'click'},
82
- subHooks: [],
83
- },
84
- {
85
- isStateEditable: false,
86
- id: 2,
87
- name: 'Effect',
88
- value: effect,
89
- subHooks: [],
90
- },
91
- ]);
92
- });
50
});
packages/react-dom/src/client/ReactDOMComponent.js
-4
@@ -1348,10 +1348,6 @@ export function listenToEventResponderEventTypes(
1348
const targetEventType = isPassive
1349
? eventType
1350
: eventType.substring(0, eventType.length - 7);
1351
- // We don't listen to this as we actually emulate it in the host config
1352
- if (targetEventType === 'beforeblur') {
1353
- continue;
1354
- }
1351
if (!listenerMap.has(eventKey)) {
1352
if (isPassive) {
1353
const activeKey = targetEventType + '_active';
packages/react-dom/src/client/ReactDOMHostConfig.js
+13
-24
@@ -9,15 +9,6 @@
9
10
import type {TopLevelType} from 'legacy-events/TopLevelEventTypes';
11
import type {RootType} from './ReactDOMRoot';
12
-import type {
13
- ReactDOMEventResponder,
14
- ReactDOMEventResponderInstance,
15
- ReactDOMFundamentalComponentInstance,
16
- ReactDOMListener,
17
- ReactDOMListenerEvent,
18
- ReactDOMListenerMap,
19
-} from '../shared/ReactDOMTypes';
20
-import type {ReactScopeMethods} from 'shared/ReactTypes';
12
13
import {
14
precacheFiberNode,
@@ -58,6 +49,14 @@ import {
49
} from '../shared/HTMLNodeType';
50
import dangerousStyleValue from '../shared/dangerousStyleValue';
51
52
+import type {
53
+ ReactDOMEventResponder,
54
+ ReactDOMEventResponderInstance,
55
+ ReactDOMFundamentalComponentInstance,
56
+ ReactDOMListener,
57
+ ReactDOMListenerEvent,
58
+ ReactDOMListenerMap,
59
+} from '../shared/ReactDOMTypes';
60
import {
61
mountEventResponder,
62
unmountEventResponder,
@@ -70,7 +69,6 @@ import {
69
enableDeprecatedFlareAPI,
70
enableFundamentalAPI,
71
enableUseEventAPI,
73
- enableScopeAPI,
72
} from 'shared/ReactFeatureFlags';
73
import {HostComponent} from 'react-reconciler/src/ReactWorkTags';
74
import {
@@ -81,13 +79,10 @@ import {
79
isManagedDOMElement,
80
isValidEventTarget,
81
listenToTopLevelEvent,
84
- attachListenerToManagedDOMElement,
82
detachListenerFromManagedDOMElement,
86
- attachTargetEventListener,
83
+ attachListenerFromManagedDOMElement,
84
detachTargetEventListener,
88
- isReactScope,
89
- attachListenerToReactScope,
90
- detachListenerFromReactScope,
85
+ attachTargetEventListener,
86
} from '../events/DOMModernPluginEventSystem';
87
import {getListenerMapForElement} from '../events/DOMEventListenerMap';
88
import {TOP_BEFORE_BLUR, TOP_AFTER_BLUR} from '../events/DOMTopLevelEventTypes';
@@ -1165,9 +1160,7 @@ export function mountEventListener(listener: ReactDOMListener): void {
1160
if (enableUseEventAPI) {
1161
const {target} = listener;
1162
if (isManagedDOMElement(target)) {
1168
- attachListenerToManagedDOMElement(listener);
1169
- } else if (enableScopeAPI && isReactScope(target)) {
1170
- attachListenerToReactScope(listener);
1163
+ attachListenerFromManagedDOMElement(listener);
1164
} else {
1165
attachTargetEventListener(listener);
1166
}
@@ -1179,8 +1172,6 @@ export function unmountEventListener(listener: ReactDOMListener): void {
1172
const {target} = listener;
1173
if (isManagedDOMElement(target)) {
1174
detachListenerFromManagedDOMElement(listener);
1182
- } else if (enableScopeAPI && isReactScope(target)) {
1183
- detachListenerFromReactScope(listener);
1175
} else {
1176
detachTargetEventListener(listener);
1177
}
@@ -1188,15 +1179,13 @@ export function unmountEventListener(listener: ReactDOMListener): void {
1179
}
1180
1181
export function validateEventListenerTarget(
1191
- target: EventTarget | ReactScopeMethods,
1182
+ target: EventTarget,
1183
listener: ?(Event) => void,
1184
): boolean {
1185
if (enableUseEventAPI) {
1186
if (
1187
target != null &&
1197
- (isManagedDOMElement(target) ||
1198
- isValidEventTarget(target) ||
1199
- isReactScope(target))
1188
+ (isManagedDOMElement(target) || isValidEventTarget(target))
1189
) {
1190
if (listener == null || typeof listener === 'function') {
1191
return true;
packages/react-dom/src/events/DOMModernPluginEventSystem.js
+22
-93
@@ -14,7 +14,7 @@ import type {
14
ElementListenerMapEntry,
15
} from '../events/DOMEventListenerMap';
16
import type {EventSystemFlags} from 'legacy-events/EventSystemFlags';
17
-import type {EventPriority, ReactScopeMethods} from 'shared/ReactTypes';
17
+import type {EventPriority} from 'shared/ReactTypes';
18
import type {Fiber} from 'react-reconciler/src/ReactFiber';
19
import type {PluginModule} from 'legacy-events/PluginModuleType';
20
import type {
@@ -142,11 +142,8 @@ const emptyDispatchConfigForCustomEvents: CustomDispatchConfig = {
142
143
const isArray = Array.isArray;
144
145
-// TODO: we should remove the FlowFixMes and the casting to figure out how to make
146
-// these patterns work properly.
147
-// $FlowFixMe: Flow struggles with this pattern, so we also have to cast it.
148
-const PossiblyWeakMap = ((typeof WeakMap === 'function' ? WeakMap : Map): any);
149
-
145
+// $FlowFixMe: Flow struggles with this pattern
146
+const PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;
147
// $FlowFixMe: Flow cannot handle polymorphic WeakMaps
148
export const eventTargetEventListenerStore: WeakMap<
149
EventTarget,
@@ -156,15 +153,6 @@ export const eventTargetEventListenerStore: WeakMap<
153
>,
154
> = new PossiblyWeakMap();
155
159
-// $FlowFixMe: Flow cannot handle polymorphic WeakMaps
160
-export const reactScopeListenerStore: WeakMap<
161
- ReactScopeMethods,
162
- Map<
163
- DOMTopLevelEventType,
164
- {bubbled: Set<ReactDOMListener>, captured: Set<ReactDOMListener>},
165
- >,
166
-> = new PossiblyWeakMap();
167
-
156
function dispatchEventsForPlugins(
157
topLevelType: DOMTopLevelEventType,
158
eventSystemFlags: EventSystemFlags,
@@ -318,20 +306,12 @@ function isMatchingRootContainer(
306
);
307
}
308
321
-export function isManagedDOMElement(
322
- target: EventTarget | ReactScopeMethods,
323
-): boolean {
309
+export function isManagedDOMElement(target: EventTarget): boolean {
310
return getClosestInstanceFromNode(((target: any): Node)) !== null;
311
}
312
327
-export function isValidEventTarget(
328
- target: EventTarget | ReactScopeMethods,
329
-): boolean {
330
- return typeof (target: Object).addEventListener === 'function';
331
-}
332
-
333
-export function isReactScope(target: EventTarget | ReactScopeMethods): boolean {
334
- return typeof (target: Object).getChildContextValues === 'function';
313
+export function isValidEventTarget(target: EventTarget): boolean {
314
+ return typeof target.addEventListener === 'function';
315
}
316
317
export function dispatchEventForPluginEventSystem(
@@ -466,16 +446,18 @@ function addEventTypeToDispatchConfig(type: DOMTopLevelEventType): void {
446
}
447
}
448
469
-export function attachListenerToManagedDOMElement(
449
+export function attachListenerFromManagedDOMElement(
450
listener: ReactDOMListener,
451
): void {
452
const {event, target} = listener;
453
const {passive, priority, type} = event;
474
-
475
- const managedTargetElement = ((target: any): Element);
476
- const containerEventTarget = getNearestRootOrPortalContainer(
477
- managedTargetElement,
478
- );
454
+ const possibleManagedTarget = ((target: any): Element);
455
+ let containerEventTarget = target;
456
+ if (getClosestInstanceFromNode(possibleManagedTarget)) {
457
+ containerEventTarget = getNearestRootOrPortalContainer(
458
+ possibleManagedTarget,
459
+ );
460
+ }
461
const listenerMap = getListenerMapForElement(containerEventTarget);
462
// Add the event listener to the target container (falling back to
463
// the target if we didn't find one).
@@ -487,11 +469,11 @@ export function attachListenerToManagedDOMElement(
469
priority,
470
);
471
// Get the internal listeners Set from the target instance.
490
- let listeners = getListenersFromTarget(managedTargetElement);
472
+ let listeners = getListenersFromTarget(target);
473
// If we don't have any listeners, then we need to init them.
474
if (listeners === null) {
475
listeners = new Set();
494
- initListenersSet(managedTargetElement, listeners);
476
+ initListenersSet(target, listeners);
477
}
478
// Add our listener to the listeners Set.
479
listeners.add(listener);
@@ -503,9 +485,8 @@ export function detachListenerFromManagedDOMElement(
485
listener: ReactDOMListener,
486
): void {
487
const {target} = listener;
506
- const managedTargetElement = ((target: any): Element);
488
// Get the internal listeners Set from the target instance.
508
- const listeners = getListenersFromTarget(managedTargetElement);
489
+ const listeners = getListenersFromTarget(target);
490
if (listeners !== null) {
491
// Remove out listener from the listeners Set.
492
listeners.delete(listener);
@@ -515,21 +496,13 @@ export function detachListenerFromManagedDOMElement(
496
export function attachTargetEventListener(listener: ReactDOMListener): void {
497
const {event, target} = listener;
498
const {capture, passive, priority, type} = event;
518
- const eventTarget = ((target: any): EventTarget);
519
- const listenerMap = getListenerMapForElement(eventTarget);
499
+ const listenerMap = getListenerMapForElement(target);
500
// Add the event listener to the TargetEvent object.
521
- listenToTopLevelEvent(
522
- type,
523
- eventTarget,
524
- listenerMap,
525
- passive,
526
- priority,
527
- capture,
528
- );
529
- let eventTypeMap = eventTargetEventListenerStore.get(eventTarget);
501
+ listenToTopLevelEvent(type, target, listenerMap, passive, priority, capture);
502
+ let eventTypeMap = eventTargetEventListenerStore.get(target);
503
if (eventTypeMap === undefined) {
504
eventTypeMap = new Map();
532
- eventTargetEventListenerStore.set(eventTarget, eventTypeMap);
505
+ eventTargetEventListenerStore.set(target, eventTypeMap);
506
}
507
// Get the listeners by the event type
508
let listeners = eventTypeMap.get(type);
@@ -550,51 +523,7 @@ export function attachTargetEventListener(listener: ReactDOMListener): void {
523
export function detachTargetEventListener(listener: ReactDOMListener): void {
524
const {event, target} = listener;
525
const {capture, type} = event;
553
- const validEventTarget = ((target: any): EventTarget);
554
- const eventTypeMap = eventTargetEventListenerStore.get(validEventTarget);
555
- if (eventTypeMap !== undefined) {
556
- const listeners = eventTypeMap.get(type);
557
- if (listeners !== undefined) {
558
- // Remove out listener from the listeners Set.
559
- if (capture) {
560
- listeners.captured.delete(listener);
561
- } else {
562
- listeners.bubbled.delete(listener);
563
- }
564
- }
565
- }
566
-}
567
-
568
-export function attachListenerToReactScope(listener: ReactDOMListener): void {
569
- const {event, target} = listener;
570
- const {capture, type} = event;
571
- const reactScope = ((target: any): ReactScopeMethods);
572
- let eventTypeMap = reactScopeListenerStore.get(reactScope);
573
- if (eventTypeMap === undefined) {
574
- eventTypeMap = new Map();
575
- reactScopeListenerStore.set(reactScope, eventTypeMap);
576
- }
577
- // Get the listeners by the event type
578
- let listeners = eventTypeMap.get(type);
579
- if (listeners === undefined) {
580
- listeners = {captured: new Set(), bubbled: new Set()};
581
- eventTypeMap.set(type, listeners);
582
- }
583
- // Add our listener to the listeners Set.
584
- if (capture) {
585
- listeners.captured.add(listener);
586
- } else {
587
- listeners.bubbled.add(listener);
588
- }
589
- // Finally, add the event to our known event types list.
590
- addEventTypeToDispatchConfig(type);
591
-}
592
-
593
-export function detachListenerFromReactScope(listener: ReactDOMListener): void {
594
- const {event, target} = listener;
595
- const {capture, type} = event;
596
- const reactScope = ((target: any): ReactScopeMethods);
597
- const eventTypeMap = reactScopeListenerStore.get(reactScope);
526
+ const eventTypeMap = eventTargetEventListenerStore.get(target);
527
if (eventTypeMap !== undefined) {
528
const listeners = eventTypeMap.get(type);
529
if (listeners !== undefined) {
packages/react-dom/src/events/__tests__/DOMModernPluginEventSystem-test.internal.js
-133
@@ -2327,139 +2327,6 @@ describe('DOMModernPluginEventSystem', () => {
2327
document.body.removeChild(container2);
2328
},
2329
);
2330
-
2331
- describe('Compatibility with Scopes API', () => {
2332
- beforeEach(() => {
2333
- jest.resetModules();
2334
- ReactFeatureFlags = require('shared/ReactFeatureFlags');
2335
- ReactFeatureFlags.enableModernEventSystem = true;
2336
- ReactFeatureFlags.enableUseEventAPI = true;
2337
- ReactFeatureFlags.enableScopeAPI = true;
2338
-
2339
- React = require('react');
2340
- ReactDOM = require('react-dom');
2341
- Scheduler = require('scheduler');
2342
- ReactDOMServer = require('react-dom/server');
2343
- });
2344
-
2345
- it('handle propagation of click events on a scope', () => {
2346
- const buttonRef = React.createRef();
2347
- const log = [];
2348
- const onClick = jest.fn(e =>
2349
- log.push(['bubble', e.currentTarget]),
2350
- );
2351
- const onClickCapture = jest.fn(e =>
2352
- log.push(['capture', e.currentTarget]),
2353
- );
2354
- const TestScope = React.unstable_createScope();
2355
-
2356
- function Test() {
2357
- const click = ReactDOM.unstable_useEvent('click');
2358
- const clickCapture = ReactDOM.unstable_useEvent('click', {
2359
- capture: true,
2360
- });
2361
- const scopeRef = React.useRef(null);
2362
-
2363
- React.useEffect(() => {
2364
- click.setListener(scopeRef.current, onClick);
2365
- clickCapture.setListener(scopeRef.current, onClickCapture);
2366
- });
2367
-
2368
- return (
2369
- <TestScope ref={scopeRef}>
2370
- <button ref={buttonRef} />
2371
- </TestScope>
2372
- );
2373
- }
2374
-
2375
- ReactDOM.render(<Test />, container);
2376
- Scheduler.unstable_flushAll();
2377
-
2378
- const buttonElement = buttonRef.current;
2379
- dispatchClickEvent(buttonElement);
2380
-
2381
- expect(onClick).toHaveBeenCalledTimes(1);
2382
- expect(onClickCapture).toHaveBeenCalledTimes(1);
2383
- expect(log).toEqual([
2384
- ['capture', buttonElement],
2385
- ['bubble', buttonElement],
2386
- ]);
2387
- });
2388
-
2389
- it('handle mixed propagation of click events on a scope', () => {
2390
- const buttonRef = React.createRef();
2391
- const divRef = React.createRef();
2392
- const log = [];
2393
- const onClick = jest.fn(e =>
2394
- log.push(['bubble', e.currentTarget]),
2395
- );
2396
- const onClickCapture = jest.fn(e =>
2397
- log.push(['capture', e.currentTarget]),
2398
- );
2399
- const TestScope = React.unstable_createScope();
2400
-
2401
- function Test() {
2402
- const click = ReactDOM.unstable_useEvent('click');
2403
- const clickCapture = ReactDOM.unstable_useEvent('click', {
2404
- capture: true,
2405
- });
2406
- const scopeRef = React.useRef(null);
2407
-
2408
- React.useEffect(() => {
2409
- click.setListener(scopeRef.current, onClick);
2410
- clickCapture.setListener(scopeRef.current, onClickCapture);
2411
- click.setListener(buttonRef.current, onClick);
2412
- clickCapture.setListener(buttonRef.current, onClickCapture);
2413
- });
2414
-
2415
- return (
2416
- <TestScope ref={scopeRef}>
2417
- <button ref={buttonRef}>
2418
- <div
2419
- ref={divRef}
2420
- onClick={onClick}
2421
- onClickCapture={onClickCapture}>
2422
- Click me!
2423
- </div>
2424
- </button>
2425
- </TestScope>
2426
- );
2427
- }
2428
-
2429
- ReactDOM.render(<Test />, container);
2430
- Scheduler.unstable_flushAll();
2431
-
2432
- const buttonElement = buttonRef.current;
2433
- dispatchClickEvent(buttonElement);
2434
-
2435
- expect(onClick).toHaveBeenCalledTimes(2);
2436
- expect(onClickCapture).toHaveBeenCalledTimes(2);
2437
- expect(log).toEqual([
2438
- ['capture', buttonElement],
2439
- ['capture', buttonElement],
2440
- ['bubble', buttonElement],
2441
- ['bubble', buttonElement],
2442
- ]);
2443
-
2444
- log.length = 0;
2445
- onClick.mockClear();
2446
- onClickCapture.mockClear();
2447
-
2448
- const divElement = divRef.current;
2449
- dispatchClickEvent(divElement);
2450
-
2451
- expect(onClick).toHaveBeenCalledTimes(3);
2452
- expect(onClickCapture).toHaveBeenCalledTimes(3);
2453
- expect(log).toEqual([
2454
- ['capture', buttonElement],
2455
- ['capture', buttonElement],
2456
- ['capture', divElement],
2457
- ['bubble', divElement],
2458
- ['bubble', buttonElement],
2459
- ['bubble', buttonElement],
2460
- ]);
2461
- });
2462
- });
2330
});
2331
},
2332
);
packages/react-dom/src/events/accumulateTwoPhaseListeners.js
+4
-36
@@ -11,19 +11,13 @@ import type {DOMTopLevelEventType} from 'legacy-events/TopLevelEventTypes';
11
import type {EventSystemFlags} from 'legacy-events/EventSystemFlags';
12
import type {ReactSyntheticEvent} from 'legacy-events/ReactSyntheticEventType';
13
14
-import {
15
- HostComponent,
16
- ScopeComponent,
17
-} from 'react-reconciler/src/ReactWorkTags';
18
-import {enableUseEventAPI, enableScopeAPI} from 'shared/ReactFeatureFlags';
14
+import {HostComponent} from 'react-reconciler/src/ReactWorkTags';
15
+import {enableUseEventAPI} from 'shared/ReactFeatureFlags';
16
17
import getListener from 'legacy-events/getListener';
18
import {getListenersFromTarget} from '../client/ReactDOMComponentTree';
19
import {IS_TARGET_EVENT_ONLY} from 'legacy-events/EventSystemFlags';
23
-import {
24
- eventTargetEventListenerStore,
25
- reactScopeListenerStore,
26
-} from './DOMModernPluginEventSystem';
20
+import {eventTargetEventListenerStore} from './DOMModernPluginEventSystem';
21
22
export default function accumulateTwoPhaseListeners(
23
event: ReactSyntheticEvent,
@@ -82,13 +76,11 @@ export default function accumulateTwoPhaseListeners(
76
// usual two phase accumulation using the React fiber tree to pick up
77
// all relevant useEvent and on* prop events.
78
let node = event._targetInst;
85
- let lastHostComponent;
79
80
// Accumulate all instances and listeners via the target -> root path.
81
while (node !== null) {
89
- // Handle listeners that are on HostComponents (i.e. <div>)
82
+ // We only care for listeners that are on HostComponents (i.e. <div>)
83
if (node.tag === HostComponent) {
91
- lastHostComponent = node.stateNode;
84
// For useEvent listenrs
85
if (enableUseEventAPI && accumulateUseEventListeners) {
86
// useEvent event listeners
@@ -135,30 +127,6 @@ export default function accumulateTwoPhaseListeners(
127
dispatchInstances.push(node);
128
}
129
}
138
- } else if (enableScopeAPI && node.tag === ScopeComponent) {
139
- const reactScope = node.stateNode.methods;
140
- const eventTypeMap = reactScopeListenerStore.get(reactScope);
141
- if (eventTypeMap !== undefined) {
142
- const type = ((event.type: any): DOMTopLevelEventType);
143
- const listeners = eventTypeMap.get(type);
144
- if (listeners !== undefined) {
145
- const captureListeners = Array.from(listeners.captured);
146
- const bubbleListeners = Array.from(listeners.bubbled);
147
-
148
- for (let i = 0; i < captureListeners.length; i++) {
149
- const listener = captureListeners[i];
150
- const {callback} = listener;
151
- dispatchListeners.unshift(callback);
152
- dispatchInstances.unshift(((lastHostComponent: any): Element));
153
- }
154
- for (let i = 0; i < bubbleListeners.length; i++) {
155
- const listener = bubbleListeners[i];
156
- const {callback} = listener;
157
- dispatchListeners.push(callback);
158
- dispatchInstances.push(((lastHostComponent: any): Element));
159
- }
160
- }
161
- }
130
}
131
node = node.return;
132
}
packages/react-dom/src/shared/ReactDOMTypes.js
+2
-6
@@ -12,7 +12,6 @@ import type {
12
ReactEventResponder,
13
ReactEventResponderInstance,
14
EventPriority,
15
- ReactScopeMethods,
15
} from 'shared/ReactTypes';
16
import type {DOMTopLevelEventType} from 'legacy-events/TopLevelEventTypes';
17
@@ -87,15 +86,12 @@ export type ReactDOMListenerEvent = {|
86
87
export type ReactDOMListenerMap = {|
88
clear: () => void,
90
- setListener: (
91
- target: EventTarget | ReactScopeMethods,
92
- callback: ?(Event) => void,
93
- ) => void,
89
+ setListener: (target: EventTarget, callback: ?(Event) => void) => void,
90
|};
91
92
export type ReactDOMListener = {|
93
callback: Event => void,
94
destroy: Node => void,
95
event: ReactDOMListenerEvent,
100
- target: EventTarget | ReactScopeMethods,
96
+ target: EventTarget,
97
|};
packages/react-reconciler/src/ReactFiberHooks.js
+3
-10
@@ -14,7 +14,6 @@ import type {
14
ReactEventResponder,
15
ReactContext,
16
ReactEventResponderListener,
17
- ReactScopeMethods,
17
} from 'shared/ReactTypes';
18
import type {Fiber} from './ReactFiber';
19
import type {ExpirationTime} from './ReactFiberExpirationTime';
@@ -1652,7 +1651,7 @@ function validateNotInFunctionRender(): boolean {
1651
function createReactListener(
1652
event: ReactListenerEvent,
1653
callback: Event => void,
1655
- target: EventTarget | ReactScopeMethods,
1654
+ target: EventTarget,
1655
destroy: Node => void,
1656
): ReactListener {
1657
return {
@@ -1666,10 +1665,7 @@ function createReactListener(
1665
function mountEventListener(event: ReactListenerEvent): ReactListenerMap {
1666
if (enableUseEventAPI) {
1667
const hook = mountWorkInProgressHook();
1669
- const listenerMap: Map<
1670
- EventTarget | ReactScopeMethods,
1671
- ReactListener,
1672
- > = new Map();
1668
+ const listenerMap: Map<EventTarget, ReactListener> = new Map();
1669
const rootContainerInstance = getRootHostContainer();
1670
1671
// Register the event to the current root to ensure event
@@ -1704,10 +1700,7 @@ function mountEventListener(event: ReactListenerEvent): ReactListenerMap {
1700
1701
const reactListenerMap: ReactListenerMap = {
1702
clear,
1707
- setListener(
1708
- target: EventTarget | ReactScopeMethods,
1709
- callback: ?(Event) => void,
1710
- ): void {
1703
+ setListener(target: EventTarget, callback: ?(Event) => void): void {
1704
if (
1705
validateNotInFunctionRender() &&
1706
validateEventListenerTarget(target, callback)
packages/shared/forks/ReactFeatureFlags.test-renderer.www.js
+1
-1
@@ -26,7 +26,7 @@ export const disableInputAttributeSyncing = false;
26
export const enableDeprecatedFlareAPI = true;
27
export const enableFundamentalAPI = false;
28
export const enableScopeAPI = true;
29
-export const enableUseEventAPI = true;
29
+export const enableUseEventAPI = false;
30
export const warnAboutUnmockedScheduler = true;
31
export const flushSuspenseFallbacksInTests = true;
32
export const enableSuspenseCallback = true;
packages/shared/forks/ReactFeatureFlags.testing.www.js
+1
-1
@@ -26,7 +26,7 @@ export const enableSchedulerDebugging = false;
26
export const enableDeprecatedFlareAPI = true;
27
export const enableFundamentalAPI = false;
28
export const enableScopeAPI = true;
29
-export const enableUseEventAPI = true;
29
+export const enableUseEventAPI = false;
30
export const warnAboutUnmockedScheduler = true;
31
export const flushSuspenseFallbacksInTests = true;
32
export const enableSuspenseCallback = true;
packages/shared/forks/ReactFeatureFlags.www.js
+1
-1
@@ -57,7 +57,7 @@ export const enableFundamentalAPI = false;
57
58
export const enableScopeAPI = true;
59
60
-export const enableUseEventAPI = true;
60
+export const enableUseEventAPI = false;
61
62
export const warnAboutUnmockedScheduler = true;
63