react-reuse-hooks
Version:
A collection of 30+ production-ready reusable React hooks for web apps, covering state, effects, media, forms, and utilities.
15 lines (12 loc) • 428 B
JavaScript
import { useEffect } from "react";
export function useClickOutside(ref, callback) {
useEffect(() => {
function handleClickOutside(event) {
if (ref.current && !ref.current.contains(event.target)) {
callback();
}
}
document.addEventListener("mousedown", handleClickOutside);
return () => document.removeEventListener("mousedown", handleClickOutside);
}, [ref, callback]);
}