dom
useClickOutside
Calls a callback when the user clicks outside a referenced element. Great for closing dropdowns, modals, and popovers.
useClickOutside.ts
import { useEffect, useRef } from "react"
export function useClickOutside<T extends HTMLElement>(
callback: () => void
) {
const ref = useRef<T>(null)
useEffect(() => {
function handleClick(event: MouseEvent) {
if (ref.current && !ref.current.contains(event.target as Node)) {
callback()
}
}
document.addEventListener("mousedown", handleClick)
return () => document.removeEventListener("mousedown", handleClick)
}, [callback])
return ref
}Was this helpful?
Sign in to give feedback
