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 | 13x 6x | import { RefObject, useEffect, useState } from "react"; export function useOnScreen( ref: RefObject<HTMLElement>, rootMargin?: string ): boolean { const [isIntersecting, setIsIntersecting] = useState(false); useEffect(() => { Iif (!ref.current) return; const observer = new IntersectionObserver( ([entry]) => setIsIntersecting(entry.isIntersecting), { rootMargin } ); observer.observe(ref.current); return () => { observer.disconnect(); }; }, [ref, rootMargin]); return isIntersecting; } |