arredemo
Version:
Instantly build a static site for your package
30 lines (19 loc) • 595 B
JavaScript
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