Files
medusa-store/www/reference/src/hooks/use-in-view.js
Kasper Fabricius Kristensen 143f06aa39 feat: Update to API references look and feel (#343)
Co-authored-by: Vadim Smirnov <smirnou.vadzim@gmail.com>
Co-authored-by: zakariasaad <zakaria.elas@gmail.com>
Co-authored-by: Vilfred Sikker <vilfredsikker@gmail.com>
Co-authored-by: olivermrbl <oliver@mrbltech.com>
2021-08-20 10:26:29 +02:00

30 lines
621 B
JavaScript

import { useEffect, useRef, useState } from "react"
const useInView = options => {
const containerRef = useRef(null)
const [isInView, setIsInView] = useState(false)
const callback = entries => {
const [entry] = entries
setIsInView(entry.isIntersecting)
}
useEffect(() => {
const ref = containerRef.current
const observer = new IntersectionObserver(callback, options)
if (ref) {
observer.observe(ref)
}
return () => {
if (ref) {
observer.unobserve(ref)
}
}
}, [containerRef, options])
return [containerRef, isInView]
}
export default useInView