Only change direction when scrollY has changed

This commit is contained in:
Sam Becker 2025-04-03 23:41:51 -05:00
parent c7e1a6b617
commit 51ba7aed3b

View File

@ -8,17 +8,24 @@ export default function useScrollDirection() {
useEffect(() => {
const handleScroll = () => {
const scrollY = window.scrollY;
const pageHeight = (
document.documentElement.scrollHeight -
window.innerHeight
);
setScrollInfo(prev => ({
scrollDirection: (
window.scrollY >= prev.scrollY ||
prev.scrollY > pageHeight
) ? 'down' : 'up',
scrollY: window.scrollY,
}));
setScrollInfo(prev => {
let scrollDirection = prev.scrollDirection;
if (scrollY !== prev.scrollY) {
scrollDirection = (
scrollY > prev.scrollY ||
prev.scrollY > pageHeight
) ? 'down' : 'up';
}
return {
scrollDirection,
scrollY,
};
});
};
window.addEventListener('scroll', handleScroll);
return () => window.removeEventListener('scroll', handleScroll);