UNPKG

arredemo

Version:

Instantly build a static site for your package

25 lines (19 loc) 585 B
import { useEffect, useState } from "react" const useScroll = (callback, delay = 30) => { const [lastUpdate, setLastUpdate] = useState(0) useEffect(() => { const onScroll = (event) => { const wpos = window.pageYOffset const diff = Math.abs(wpos - lastUpdate) if (diff >= delay) { setLastUpdate(wpos) callback(event) } } window.addEventListener("scroll", onScroll, { passive: true }) return () => { window.removeEventListener("scroll", onScroll) } }, [callback, lastUpdate, delay]) } export default useScroll