Rev 1324 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import { useState, useEffect, useRef } from 'react'
export default function useNearScreen({
externalRef,
once = true,
rootMargin = '100px'
}) {
const [isNearScreen, setShow] = useState(false)
const fromRef = useRef()
useEffect(function () {
const element = externalRef ? externalRef.current : fromRef.current
const onChange = (entries, observer) => {
// console.log("entries", entries)
const el = entries[0]
// console.log("el", el)
if (el.isIntersecting) {
setShow(true)
once && observer.disconnect()
} else {
!once && setShow(false)
}
}
const observer = new IntersectionObserver(onChange, {
rootMargin
})
if (element) observer.observe(element)
return () => observer && observer.disconnect()
})
return isNearScreen
}