From f40fe8d8baaa91c53ffd1d59446d47f46745a248 Mon Sep 17 00:00:00 2001 From: Sebastian Markbage Date: Tue, 18 Feb 2025 19:17:33 -0500 Subject: [PATCH] Don't change direction if the new scroll position is the same as current This avoids a case where we'd switch to previous when returning to 0 where 0 was also the starting point. --- .../src/client/ReactFiberConfigDOM.js | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/packages/react-dom-bindings/src/client/ReactFiberConfigDOM.js b/packages/react-dom-bindings/src/client/ReactFiberConfigDOM.js index dbe3997127ff4..52560d0b006b0 100644 --- a/packages/react-dom-bindings/src/client/ReactFiberConfigDOM.js +++ b/packages/react-dom-bindings/src/client/ReactFiberConfigDOM.js @@ -1504,11 +1504,10 @@ export function subscribeToGestureDirection( const scrollCallback = () => { const newTime = provider.currentTime; if (newTime !== null) { - directionCallback( - typeof newTime === 'number' - ? newTime > currentOffset - : newTime.value > currentOffset, - ); + const newValue = typeof newTime === 'number' ? newTime : newTime.value; + if (newValue !== currentOffset) { + directionCallback(newValue > currentOffset); + } } }; element.addEventListener('scroll', scrollCallback, false); @@ -1521,11 +1520,10 @@ export function subscribeToGestureDirection( const rafCallback = () => { const newTime = provider.currentTime; if (newTime !== null) { - directionCallback( - typeof newTime === 'number' - ? newTime > currentOffset - : newTime.value > currentOffset, - ); + const newValue = typeof newTime === 'number' ? newTime : newTime.value; + if (newValue !== currentOffset) { + directionCallback(newValue > currentOffset); + } } callbackID = requestAnimationFrame(rafCallback); };