Skip to content

Instantly share code, notes, and snippets.

@maiconrs95
Created March 1, 2024 16:44
Show Gist options
  • Save maiconrs95/ab5f704e7ada0b1819d503b1c0434fe0 to your computer and use it in GitHub Desktop.
Save maiconrs95/ab5f704e7ada0b1819d503b1c0434fe0 to your computer and use it in GitHub Desktop.
Check click outside element target
import { useEffect, useState, useRef } from "react";
function useOneClickOutside() {
const node = useRef(null);
const [open, setOpen] = useState(false);
const handleClickOutside = (e) => {
if (node.current.contains(e.target)) {
return;
}
setOpen(false);
};
useEffect(() => {
if (open) {
document.addEventListener("mousedown", handleClickOutside);
} else {
document.removeEventListener("mousedown", handleClickOutside);
}
return () => {
document.removeEventListener("mousedown", handleClickOutside);
};
}, [open]);
return {
node,
open,
setOpen
};
}
export default useOneClickOutside;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment