useClickOutside
React Hook to Detect Clicks Outside an Element
The useClickOutside
hook is a simple and effective way to detect clicks outside of a specified element in your React applications. This is particularly useful for closing modals, dropdowns, or tooltips when the user clicks outside of them.
import React, { useState, useRef, useEffect } from 'react';type Handler = (event: MouseEvent | TouchEvent) => void;/** * A custom React hook that triggers a callback when a click occurs outside of the referenced element. * The hook returns a ref that should be attached to the element to monitor. * * @param handler - The function to call when a click outside is detected. * @returns A React ref object to attach to the element. */function useClickOutside<T extends HTMLElement>(handler: Handler): React.RefObject<T> { const ref = useRef<T>(null); useEffect(() => { const listener = (event: MouseEvent | TouchEvent) => { if (!ref.current || ref.current.contains(event.target as Node)) { return; } handler(event); }; document.addEventListener('mousedown', listener); document.addEventListener('touchstart', listener); return () => { document.removeEventListener('mousedown', listener); document.removeEventListener('touchstart', listener); }; }, [handler]); return ref;}