当没有切换选项时,我的桌面大小为state= false,因为它最初被定义为false.因此,没有显示菜单.我想要这个功能,只有当网站是在手机上打开,而不是在桌面上.
const Navbar = () => {
const [isMenuOpen, setIsMenuOpen] = useState(false);
const toggle = () => setIsMenuOpen(!isMenuOpen);
const ref = useRef();
useEffect(() => {
const checkIfClickedOutside = (e) => {
if (!ref.current?.contains(e.target)) {
setIsMenuOpen(false);
}
};
document.addEventListener("mousedown", checkIfClickedOutside);
return () => {
document.removeEventListener("mousedown", checkIfClickedOutside);
};
}, []);
return (
<>
<header>
<nav>
<div className="nav">
<div className="nav-brand">
<Link to="./" className="text-black">
Website
</Link>
</div>
<div ref={ref}> // <-- ref to this containing div
<div className="toggle-icon" onClick={toggle}>
<i
id="toggle-button"
className={isMenuOpen ? "fas fa-times" : "fas fa-bars"}
/>
</div>
{isMenuOpen && (
<div className={isMenuOpen ? "nav-menu visible" : "nav-menu"}>
....
</div>
)}
</div>
</div>
</nav>
</header>
</>
);
};