reactjs - 为什么我不能在导航栏按钮和关闭按钮之间切换?
问题描述
因此,当我单击导航栏图标时,尽管我将nav-menu保留为-100px并将nav-menu.active保留为0,但我的侧边栏并未显示。我不知道出了什么问题?有人可以帮助我吗?太感谢了!
这是我的 Navbar.js:
import React, { useState } from "react";
import * as FaIcons from "react-icons/fa";
import * as AiIcons from "react-icons/ai";
import { Link } from "react-router-dom";
import { SidebarData } from "./SidebarData";
import "./Navbar.css";
function Navbar() {
const [sidebar, setSidebar] = useState(false);
const showSidebar = () => setSidebar(!setSidebar);
return (
<div>
<div className="navbar">
<Link to="#" className="menu-bars">
<FaIcons.FaBars onClick={showSidebar} />{" "}
</Link>{" "}
</div>{" "}
<nav className={sidebar ? "nav-menu active" : "nav-menu"}>
<ul className="nav-menu-items">
<li className="navbar-toggle">
<Link to="#" className="menu-bars">
<AiIcons.AiFillCloseSquare />
</Link>{" "}
</li>{" "}
{SidebarData.map((item, index) => {
return (
<li key={index} className={item.cName}>
<Link to={item.path}>
{" "}
{item.icon} <span> {item.title} </span>{" "}
</Link>{" "}
</li>
);
})}{" "}
</ul>{" "}
</nav>{" "}
</div>
);
}
export default Navbar;
这是我的 Navbar.css:
.navbar {
background-color: aquamarine;
height: 80px;
display: flex;
}
.nav-menu {
background-color: aquamarine;
width: 250px;
height: 100vh;
display: flex;
position: fixed;
top: 0;
left: -100%;
transition: 850ms;
}
.nav-menu.active {
left: 0;
transition: 350ms;
}
解决方案
您正试图否定您的状态更新器功能:
const showSidebar = () => setSidebar(!setSidebar);
您想要切换状态:
const [sidebar, setSidebar] = useState(false);
const showSidebar = () => setSidebar(show => !show);
推荐阅读
- mysql - 如何有效地找到以 N 开头的序列中的第一个间隙(缺失的数字)
- tensorflow - 在 Keras 模型中设置层堆栈的权重?
- python - 无法使用 python 访问 selenium 中的选择下拉列表中的选项-“元素当前不可见”
- shopify - 将侧边栏添加到 Debut Theme Shopify
- azure - Azure 身份验证重定向到不需要的 URL
- javascript - 组合二维数组然后按索引 0 排序的最快方法
- python - pyspark — 拆分后对 Array(StringType()) 类型列中的值求和的最佳方法
- c - 在十六进制编辑器上查找调试符号指向的变量的值
- android - 撰写 BasicTextField 焦点问题
- c# - 难以理解实现算法的逻辑 - C#