The Code
import { useState, useEffect } from 'react';
export function useScrollPosition() {
const [scrollPosition, setScrollPosition] = useState(0);
useEffect(() => {
const updatePosition = () => {
setScrollPosition(window.scrollY);
};
window.addEventListener('scroll', updatePosition);
updatePosition();
return () => window.removeEventListener('scroll', updatePosition);
}, []);
return scrollPosition;
}
Pro Tip: Combine this with
useThrottlefor better performance on scroll-heavy pages.
Usage
function Navbar() {
const scrollY = useScrollPosition();
const isScrolled = scrollY > 50;
return (
<nav className={isScrolled ? 'bg-white shadow' : 'bg-transparent'}>
Logo
</nav>
);
}
Sponsored Content
Google AdSense Placeholder
CONTENT SLOT