Skip to content

Instantly share code, notes, and snippets.

@itsMapleLeaf
Created November 14, 2020 21:48
Show Gist options
  • Save itsMapleLeaf/d6ca4f027387c15bdff7652928993ef0 to your computer and use it in GitHub Desktop.
Save itsMapleLeaf/d6ca4f027387c15bdff7652928993ef0 to your computer and use it in GitHub Desktop.
useIntersection
import { useEffect, useState } from "react"
function useIntersection() {
const [element, setElement] = useState<Element>()
const [isIntersecting, setIntersecting] = useState(false)
useEffect(() => {
if (!element) return
const observer = new IntersectionObserver(([entry]) => {
setIntersecting(entry.isIntersecting)
})
observer.observe(element)
return () => observer.disconnect()
}, [element])
return [setElement, isIntersecting] as const
}
function Comp() {
const [ref, isIntersecting] = useIntersection()
return <div ref={ref} />
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment