jackmerrill.com/util/hooks/useOnScreen.ts

20 lines
476 B
TypeScript
Raw Normal View History

2021-09-03 10:13:30 -07:00
import { useState, useEffect } from 'react';
export default function useOnScreen(ref) {
let observer = null
const [isIntersecting, setIntersecting] = useState(false)
useEffect(() => {
observer = new IntersectionObserver(
([entry]) => setIntersecting(entry.isIntersecting)
)
observer.observe(ref.current)
// Remove the observer as soon as the component is unmounted
return () => { observer.disconnect() }
}, [])
return isIntersecting
}