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 | null>,
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;
}
|