Proyectos de Subversion LeadersLinked - SPA

Rev

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

Rev Autor Línea Nro. Línea
3719 stevensc 1
import { useState, useEffect, useRef } from 'react';
2
 
3
export function useNearScreen({ once = true, rootMargin = '100px' }) {
4
  const [isNearScreen, setShow] = useState(false);
5
  const fromRef = useRef(null);
6
 
7
  useEffect(() => {
8
    const onChange = (entries, observer) => {
9
      const el = entries[0];
10
 
11
      if (el.isIntersecting) {
12
        setShow(true);
13
 
14
        once && observer.disconnect();
15
      } else {
16
        !once && setShow(false);
17
      }
18
    };
19
 
20
    const observer = new IntersectionObserver(onChange, {
21
      rootMargin
22
    });
23
 
24
    if (fromRef.current) observer.observe(fromRef.current);
25
 
26
    return () => observer && observer.disconnect();
27
  }, [fromRef]);
28
 
29
  return [isNearScreen, fromRef];
30
}