@@ -20,6 +20,8 @@ import {
2020 getEventHandlerListeners ,
2121 setEventHandlerListeners ,
2222 getFiberFromScopeInstance ,
23+ doesTargetHaveEventHandle ,
24+ addEventHandleToTarget ,
2325} from './ReactDOMComponentTree' ;
2426import { ELEMENT_NODE , COMMENT_NODE } from '../shared/HTMLNodeType' ;
2527import {
@@ -42,8 +44,6 @@ type EventHandleOptions = {|
4244 priority ? : EventPriority ,
4345| } ;
4446
45- const PossiblyWeakSet = typeof WeakSet === 'function' ? WeakSet : Set ;
46-
4747function getNearestRootOrPortalContainer ( node : Fiber ) : null | Element {
4848 while ( node !== null ) {
4949 const tag = node . tag ;
@@ -201,9 +201,7 @@ export function createEventHandle(
201201 listenerPriority = getEventPriorityForListenerSystem ( domEventName ) ;
202202 }
203203
204- const registeredReactDOMEvents = new PossiblyWeakSet ( ) ;
205-
206- return (
204+ const eventHandle = (
207205 target : EventTarget | ReactScopeInstance ,
208206 callback : ( SyntheticEvent < EventTarget > ) => void ,
209207 ) = > {
@@ -212,8 +210,8 @@ export function createEventHandle(
212210 'ReactDOM.createEventHandle: setter called with an invalid ' +
213211 'callback. The callback must be a function.' ,
214212 ) ;
215- if ( ! registeredReactDOMEvents . has ( target ) ) {
216- registeredReactDOMEvents . add ( target ) ;
213+ if ( ! doesTargetHaveEventHandle ( target , eventHandle ) ) {
214+ addEventHandleToTarget ( target , eventHandle ) ;
217215 registerReactDOMEvent (
218216 target ,
219217 domEventName ,
@@ -241,6 +239,8 @@ export function createEventHandle(
241239 ) ;
242240 } ;
243241 } ;
242+
243+ return eventHandle ;
244244 }
245245 return ( null : any ) ;
246246}
0 commit comments