У меня есть меню переключения, и я пытаюсь обнаружить события щелчка за пределами меню, чтобы иметь возможность закрыть меню. Я могу закрыть меню, когда пользователь щелкает за пределами меню, однако, чтобы открыть меню снова, вы бынужно дважды щелкнуть по нему, кто-нибудь знает, что я должен сделать, чтобы это исправить, (меню должно открываться одним щелчком мыши)
const RightMenu = ({ t, history }) => {
let [menuOpen, setMenuOpen] = useState(false);
const menuDiv = useRef({});
const toggleMenu = useRef();
useEffect(() => {
window.addEventListener("click", () => {
if ((menuDiv.current.style.display = "block")) {
menuDiv.current.style.display = "none";
}
});
return () => {
window.removeEventListener("click", () => {});
};
}, []);
const handleClick = e => {
e.stopPropagation();
if (menuOpen === false) {
menuDiv.current.style.display = "block";
setMenuOpen(true);
}
if (menuOpen === true) {
menuDiv.current.style.display = "none";
setMenuOpen(false);
}
};
return (
<div>
<div
id="menu"
ref={menuDiv}
style={{
display: "none"
}}
>Menu items</div>
<div
className="text-center"
ref={toggleMenu}
onClick={e => handleClick(e)}
> Menu Button</div>
)
}