Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 1324 | Ir a la última revisión | | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1323 stevensc 1
import { useState, useEffect, useRef } from 'react'
2
 
3
export default function useNearScreen({
4
  externalRef,
5
  once = true,
6
  rootMargin = '100px'
7
}) {
8
  const [isNearScreen, setShow] = useState(false)
9
  const fromRef = useRef()
10
 
11
  useEffect(function () {
12
    const element = externalRef ? externalRef.current : fromRef.current
13
 
14
    const onChange = (entries, observer) => {
15
      // console.log("entries", entries)
16
 
17
      const el = entries[0]
18
      // console.log("el", el)
19
 
20
      if (el.isIntersecting) {
21
        setShow(true)
22
 
23
        once && observer.disconnect()
24
      } else {
25
        !once && setShow(false)
26
      }
27
    }
28
 
29
    const observer = new IntersectionObserver(onChange, {
30
      rootMargin
31
    })
32
 
33
    if (element) observer.observe(element)
34
 
35
    return () => observer && observer.disconnect()
36
  })
37
 
38
  return isNearScreen
39
}