【发布时间】:2021-07-30 07:34:40
【问题描述】:
我正在开发我的第一个 React.js 项目,并正在尝试构建个人网站的原始版本。我遇到了汉堡式侧边栏的下拉功能的问题 - 我想使用 onClick 显示和隐藏导航栏链接。我试图通过为我的导航栏(我的代码中的 .nav_links)提供一个 ID 来做到这一点,该 ID 将使用 showLinks 钩子并使用三元运算符从“隐藏”更改为“显示”。但是,div中三元运算符后的初始值在第一次渲染后设置为undefined,所以我的onClick方法不起作用。我希望能澄清这个问题,因为其他 stackoverflow 帖子似乎都与我编写网站的方法没有直接关系。
以下是我的部分代码供参考:
const [showLinks, setShowLinks] = useState(true);
<nav>
<ul className="nav_links" id={showLinks ? "hidden" : ""}>
<li>Home</li>
<li>About</li>
<li>Projects</li>
<li>Resume</li>
</ul>
</nav>
<a className="contact_form" href="#"><button>Contact Me</button></a>
<div className="burger" onClick={() => setShowLinks(!showLinks)}>
<div className="line1"></div>
<div className="line2"></div>
<div className="line3"></div>
</div>
</header>
我的部分 CSS:
@media screen and (max-width: 843px) {
body {
overflow-x: hidden;
}
.nav_links #hidden {
display: none;
}
.nav_links {
position: absolute;
right: 0px;
height: 20vh;
top: 20vh;
background-color: ghostwhite;
display: flex;
flex-direction: column;
align-items: center;
width: 100%;
transition: transform 0.5s ease-in;
}
}
【问题讨论】:
-
这里
.nav_links #hidden隐藏了#hidden,它位于.nav_links中 -
我的想法是根据 showLinks 的设置来使用带有或不带有 #hidden 的 .nav_links。对我来说问题是第一行中的 id
-
尝试将您的选择器更改为
#hidden .nav_links,因为目前display: none从未应用,因为#hidden不在具有.nav_links的元素内,无论showLinks值如何。跨度> -
刚刚编辑它以通过 nav_links 获得 id,因为那是我目前在我的代码中所拥有的。还是不行。除了我的 .burger 类和行之外,我还有: onClick={console.log(document.getElementsByClassName("nav_links").id)} ,每次单击汉堡行时它都会打印 undefined 。
-
@EmilDimitrov 打败了我。在我输入答案时,他指出了选择器排序问题。 :)
标签: javascript html css reactjs