From d04488982a9da9e6418cadca543525d268da79c0 Mon Sep 17 00:00:00 2001 From: Sam Becker Date: Wed, 2 Apr 2025 21:41:34 -0500 Subject: [PATCH] Tweak useScrollDirection behavior --- src/utility/useScrollDirection.ts | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/utility/useScrollDirection.ts b/src/utility/useScrollDirection.ts index d6d7fdda..30ed9bc6 100644 --- a/src/utility/useScrollDirection.ts +++ b/src/utility/useScrollDirection.ts @@ -1,21 +1,22 @@ -import { useEffect, useState } from 'react'; +import { useEffect, useState, useRef } from 'react'; export default function useScrollDirection() { - const [scrollInfo, setScrollInfo] = useState({ - scrollDirection: 'down' as 'up' | 'down', - lastScrollY: 0, - }); + const [scrollDirection, setScrollDirection] = + useState<'up' | 'down'>('down'); + + const lastScrollY = useRef(0); useEffect(() => { const handleScroll = () => { - setScrollInfo(prev => ({ - scrollDirection: window.scrollY > prev.lastScrollY ? 'down' : 'up', - lastScrollY: window.scrollY, - })); + setScrollDirection(window.scrollY > lastScrollY.current ? 'down' : 'up'); + lastScrollY.current = window.scrollY; }; window.addEventListener('scroll', handleScroll); return () => window.removeEventListener('scroll', handleScroll); }, []); - return scrollInfo; + return { + scrollDirection, + lastScrollY: lastScrollY.current, + }; }