Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | import { useState, useEffect, useMemo } from "react"; const useOnScreen = (ref: React.MutableRefObject<Element | null>) => { const [isIntersecting, setIntersecting] = useState(false); const observer = useMemo(() => { return new IntersectionObserver(([entry]) => setIntersecting(entry.isIntersecting) ); }, []); useEffect(() => { Iif (ref.current) { observer.observe(ref.current); } // Remove the observer as soon as the component is unmounted return () => { observer.disconnect(); }; }, [observer, ref]); return isIntersecting; }; export default useOnScreen; |