Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 2774 | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |

import { useState, useEffect, useRef } from 'react';

export function useNearScreen({ once = true, rootMargin = '100px' }) {
  const [isNearScreen, setShow] = useState(false);
  const fromRef = useRef(null);

  useEffect(() => {
    const onChange = (entries, observer) => {
      const el = entries[0];

      if (el.isIntersecting) {
        setShow(true);

        once && observer.disconnect();
      } else {
        !once && setShow(false);
      }
    };

    const observer = new IntersectionObserver(onChange, {
      rootMargin
    });

    if (fromRef.current) observer.observe(fromRef.current);

    return () => observer && observer.disconnect();
  }, [fromRef]);

  return [isNearScreen, fromRef];
}