useClickOutside

Detect clicks outside of a specified element and trigger a callback.


✅ Features

  • Clean and reliable
  • Type-safe
  • Great for dropdowns and modals

📦 Usage

1const ref = useClickOutside(() => setOpen(false))
2
3return (
4  <div ref={ref}>
5    <p>Click outside me to close.</p>
6  </div>
7)

📋 Source Code

This is the full implementation of useClickOutside

1import { useEffect } from 'react'
2
3export function useClickOutside(ref: React.RefObject<HTMLElement>, callback: () => void) {
4  useEffect(() => {
5    const handleClick = (e: MouseEvent) => {
6      if (ref.current && !ref.current.contains(e.target as Node)) {
7        callback()
8      }
9    }
10
11    document.addEventListener('mousedown', handleClick)
12    return () => document.removeEventListener('mousedown', handleClick)
13  }, [ref, callback])
14}
15