useIsWindowScrolled
hookas/use-is-window-scrolledFreeHook
A hook to check if the window is scrolled
Install it
npx shadcn@latest add https://hookas.letstri.dev/r/use-is-window-scrolled.jsonSource
1'use client'23import * as React from 'react'45const isBrowser = typeof window !== 'undefined'67export function useIsWindowScrolled(8 { threshold = 10 }: { threshold?: number } = {},9) {10 const scrollTop = isBrowser ? window.scrollY || window.pageYOffset || document.documentElement.scrollTop || 0 : 011 const scrollLeft = isBrowser ? window.scrollX || window.pageXOffset || document.documentElement.scrollLeft || 0 : 01213 const [isScrolled, setIsScrolled] = React.useState(scrollTop > threshold || scrollLeft > threshold)1415 const handleScrollEvent = React.useEffectEvent(() => {16 setIsScrolled(scrollTop > threshold || scrollLeft > threshold)17 })1819 React.useEffect(() => {20 window.addEventListener('scroll', handleScrollEvent, { passive: true })2122 return () => {23 window.removeEventListener('scroll', handleScrollEvent)24 }25 }, [threshold])2627 return isScrolled28}
Files it writes
More from hookas
All 30 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| useAsyncEffectuse-async-effect | hookas | Hooks | Free | no deps | |
| useClickOutsideuse-click-outside | hookas | Hooks | Free | no deps | |
| useDebounceCallbackuse-debounced-callback | hookas | Hooks | Free | no deps | |
| useDebounceMemouse-debounced-memo | hookas | Hooks | Free | no deps | |
| useDebounceStateuse-debounced-state | hookas | Hooks | Free | no deps | |
| useElementSizeuse-element-size | hookas | Hooks | Free | no deps | |
| useFullscreenuse-fullscreen | hookas | Hooks | Free | no deps | |
| useIntervaluse-interval | hookas | Hooks | Free | no deps |
