reactjs - 单击 div 时内联样式不想更改
问题描述
我试图在单击 div 时切换导航(菜单)。控制台确实记录了 showNav 更改,但它不起作用。它仅在我在 div 中手动更改样式时才有效。
import React, { useContext } from 'react'
import { VegetarianContext } from '../contexts/VegetarianContext'
const Navbar = () => {
const { toggleVegetarian } = useContext(VegetarianContext);
let showNav = true;
return (
<div className="navbar" style={{visibility: showNav ? 'visible' : 'hidden' }}>
<nav>
<div className="close" onClick={() => {
showNav = !showNav;
console.log(showNav);
}}>
<img className="close" src={require("../img/tacomenu.png")} />
</div>
<ul>
<li><a href="/">Order</a></li>
<li><a href="/about">About</a></li>
<li className="vegetarian"><a onClick={toggleVegetarian}>Are you vegetarian?</a></li>
</ul>
</nav>
</div>
);
}
export default Navbar;
解决方案
如果你想重新渲染一些组件,你应该使用state
.
import React, { useContext } from 'react'
import { VegetarianContext } from '../contexts/VegetarianContext'
const Navbar = () => {
const { toggleVegetarian } = useContext(VegetarianContext);
//let showNav = true;
const [showNav, setShowNav] = React.useState(true);
return (
<div className="navbar" style={{visibility: showNav ? 'visible' : 'hidden' }}>
<nav>
<div className="close" onClick={() => {
//setShowNav(!showNav) // it works as Toggle
setShowNav(false) // it works as Close only
}}>
<img className="close" src={require("../img/tacomenu.png")} />
</div>
<ul>
<li><a href="/">Order</a></li>
<li><a href="/about">About</a></li>
<li className="vegetarian"><a onClick={toggleVegetarian}>Are you vegetarian?</a></li>
</ul>
</nav>
</div>
);
}
export default Navbar;
推荐阅读
- javascript - 如何通过字符串中“单词”的升序对字符串数组进行排序?javascript
- android - 如何选择性地观察 Android Room 数据库 INSERT、DELETE 和 UPDATE 事件?
- c++ - g++ 不会在模板代码中发出 -Wsign-compare
- javascript - 如何让我的函数上限(x)在命令提示符下生成一个数字?
- javascript - 为什么在尝试搜索二叉树时出现无限循环?
- javascript - 如何测试调用外部 api 的 redux-saga 的生成器?
- python - 如何对全年的电子表格数据执行每天的功能
- haskell - 第 6 章,练习 7,从第一原理开始的 Haskell
- c++ - 是否可以使用 MSVS2017 C++ 编译器在类中初始化数组而不会出现错误 C2864?
- go - 管理硬编码的导入路径