24 lines
534 B
TypeScript
24 lines
534 B
TypeScript
import * as React from 'react'
|
|
|
|
export function useAtBottom(offset = 0) {
|
|
const [isAtBottom, setIsAtBottom] = React.useState(false)
|
|
|
|
React.useEffect(() => {
|
|
const handleScroll = () => {
|
|
setIsAtBottom(
|
|
window.innerHeight + window.scrollY >=
|
|
document.body.offsetHeight - offset
|
|
)
|
|
}
|
|
|
|
window.addEventListener('scroll', handleScroll, { passive: true })
|
|
handleScroll()
|
|
|
|
return () => {
|
|
window.removeEventListener('scroll', handleScroll)
|
|
}
|
|
}, [offset])
|
|
|
|
return isAtBottom
|
|
}
|