From 4cd1e1103b0c4800e037dbd8fd3be46c019b490c Mon Sep 17 00:00:00 2001 From: Dominic Gannaway Date: Tue, 3 Mar 2020 13:37:00 +0000 Subject: [PATCH] Address feedback Fix Fix Fix --- .../src/events/DOMModernPluginEventSystem.js | 18 ++++++++++-------- ...DOMModernPluginEventSystem-test.internal.js | 8 ++------ 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/packages/react-dom/src/events/DOMModernPluginEventSystem.js b/packages/react-dom/src/events/DOMModernPluginEventSystem.js index 61c707bad6a1..b8c07cc4e914 100644 --- a/packages/react-dom/src/events/DOMModernPluginEventSystem.js +++ b/packages/react-dom/src/events/DOMModernPluginEventSystem.js @@ -12,6 +12,7 @@ import type {DOMTopLevelEventType} from 'legacy-events/TopLevelEventTypes'; import type {EventSystemFlags} from 'legacy-events/EventSystemFlags'; import type {Fiber} from 'react-reconciler/src/ReactFiber'; import type {PluginModule} from 'legacy-events/PluginModuleType'; +import type {ReactSyntheticEvent} from 'legacy-events/ReactSyntheticEventType'; import {registrationNameDependencies} from 'legacy-events/EventPluginRegistry'; import {batchedEventUpdates} from 'legacy-events/ReactGenericBatching'; @@ -102,11 +103,11 @@ function dispatchEventsForPlugins( rootContainer: Element | Document, ): void { const nativeEventTarget = getEventTarget(nativeEvent); - const syntheticEvents = []; + const syntheticEvents: Array = []; for (let i = 0; i < plugins.length; i++) { const possiblePlugin: PluginModule = plugins[i]; - if (possiblePlugin) { + if (possiblePlugin !== undefined) { const extractedEvents = possiblePlugin.extractEvents( topLevelType, targetInst, @@ -115,12 +116,13 @@ function dispatchEventsForPlugins( eventSystemFlags, rootContainer, ); - if (extractedEvents) { - if (isArray(extractedEvents)) { - syntheticEvents.push(...(extractedEvents: any)); - } else { - syntheticEvents.push(extractedEvents); - } + if (isArray(extractedEvents)) { + // Flow complains about @@iterator being missing in ReactSyntheticEvent, + // so we cast to avoid the Flow error. + const arrOfExtractedEvents = ((extractedEvents: any): Array); + syntheticEvents.push(...arrOfExtractedEvents); + } else if (extractedEvents != null) { + syntheticEvents.push(extractedEvents); } } } diff --git a/packages/react-dom/src/events/__tests__/DOMModernPluginEventSystem-test.internal.js b/packages/react-dom/src/events/__tests__/DOMModernPluginEventSystem-test.internal.js index 5a82c1d23823..66c670b7ca3e 100644 --- a/packages/react-dom/src/events/__tests__/DOMModernPluginEventSystem-test.internal.js +++ b/packages/react-dom/src/events/__tests__/DOMModernPluginEventSystem-test.internal.js @@ -13,16 +13,12 @@ let React; let ReactFeatureFlags; let ReactDOM; -function dispatchEvent(element, type) { +function dispatchClickEvent(element) { const event = document.createEvent('Event'); - event.initEvent(type, true, true); + event.initEvent('click', true, true); element.dispatchEvent(event); } -function dispatchClickEvent(element) { - dispatchEvent(element, 'click'); -} - describe('DOMModernPluginEventSystem', () => { let container;