arredemo
Version:
Instantly build a static site for your package
20 lines (17 loc) • 465 B
JavaScript
import { useCallback, useEffect } from "react"
export const useOnClickOutside = (ref, handler) => {
const handleClick = useCallback(
(event) => {
if (ref.current && !ref.current.contains(event.target)) {
handler(event)
}
},
[ref, handler]
)
useEffect(() => {
document.body.addEventListener("click", handleClick)
return () => {
document.body.removeEventListener("click", handleClick)
}
}, [handleClick])
}