diff --git a/packages/react-dom/src/events/DOMEventResponderSystem.js b/packages/react-dom/src/events/DOMEventResponderSystem.js index c1bc1d780c..93a493b559 100644 --- a/packages/react-dom/src/events/DOMEventResponderSystem.js +++ b/packages/react-dom/src/events/DOMEventResponderSystem.js @@ -402,16 +402,20 @@ const eventResponderContext: ReactResponderContext = { }, getEventCurrentTarget(event: ReactResponderEvent): Element { validateResponderContext(); - const target: any = event.target; - let currentTarget = target; - while ( - currentTarget.parentNode && - currentTarget.parentNode.nodeType === Node.ELEMENT_NODE && - isTargetWithinEventComponent(currentTarget.parentNode) - ) { - currentTarget = currentTarget.parentNode; + const target = event.target; + let fiber = getClosestInstanceFromNode(target); + let hostComponent = target; + + while (fiber !== null) { + if (fiber.stateNode === currentInstance) { + break; + } + if (fiber.tag === HostComponent) { + hostComponent = fiber.stateNode; + } + fiber = fiber.return; } - return currentTarget; + return ((hostComponent: any): Element); }, getTimeStamp(): number { validateResponderContext();