diff --git a/packages/react-events/src/Press.js b/packages/react-events/src/Press.js index 69007c03fd..d762c8ac41 100644 --- a/packages/react-events/src/Press.js +++ b/packages/react-events/src/Press.js @@ -576,6 +576,7 @@ function updateIsPressWithinResponderRegion( props: PressProps, state: PressState, ): void { + let isPressWithinResponderRegion = true; if ( state.pressTarget != null && !context.isTargetWithinElement(target, state.pressTarget) @@ -607,7 +608,7 @@ function updateIsPressWithinResponderRegion( } const {clientX: x, clientY: y} = (nativeEventOrTouchEvent: any); - state.isPressWithinResponderRegion = + isPressWithinResponderRegion = left != null && right != null && top != null && @@ -616,6 +617,7 @@ function updateIsPressWithinResponderRegion( y !== null && (x >= left && x <= right && y >= top && y <= bottom); } + state.isPressWithinResponderRegion = isPressWithinResponderRegion; } const PressResponder = { diff --git a/packages/react-events/src/__tests__/Press-test.internal.js b/packages/react-events/src/__tests__/Press-test.internal.js index 42510a2458..deaa330378 100644 --- a/packages/react-events/src/__tests__/Press-test.internal.js +++ b/packages/react-events/src/__tests__/Press-test.internal.js @@ -1049,6 +1049,55 @@ describe('Event responder: Press', () => { ]); }); + it('no delay and "onPress*" events are correctly called with target change', () => { + let events = []; + const outerRef = React.createRef(); + const innerRef = React.createRef(); + const createEventHandler = msg => () => { + events.push(msg); + }; + + const element = ( +