YesPlayMusic/packages/web/hooks/useIntersectionObserver.ts
2023-03-26 22:10:56 +08:00

22 lines
546 B
TypeScript

import { useState, useEffect, RefObject } from 'react'
const useIntersectionObserver = (element: RefObject<Element>): { onScreen: boolean } => {
const [onScreen, setOnScreen] = useState(false)
useEffect(() => {
if (element.current) {
const observer = new IntersectionObserver(([entry]) => setOnScreen(entry.isIntersecting))
observer.observe(element.current)
return () => {
observer.disconnect()
}
}
}, [element, setOnScreen])
return {
onScreen,
}
}
export default useIntersectionObserver