javascript - 类不会使用 classList.remove() 删除?
问题描述
我试图<div className='menu' onClick={handleSidebar}>
在单击它时添加“打开”类,并在再次单击时删除。在 devtools 中,我可以看到添加了“打开”,但是当我再次单击它时,它不会删除。是否有不同的方法来删除类?
import React, { useEffect } from 'react';
import './menu.styles.scss';
function Menu({ handleSidebar }) {
useEffect(() => {
const menu = document.querySelector('.menu');
let menuOpen = false;
menu.addEventListener('click', () => {
if (!menuOpen) {
menu.classList.add('open');
menuOpen = !menuOpen;
} else {
menu.classList.remove('open');
menuOpen = !menuOpen;
}
});
});
return (
<div className='menu' onClick={handleSidebar}>
<div className='menu-btn'></div>
</div>
);
}
export default Menu;
解决方案
你最好用useState
......你现在拥有它的方式document.querySelector
是除了反应点之外。
import React, { useEffect } from 'react';
import './menu.styles.scss';
function Menu({ handleSidebar }) {
const [ open, setOpen ] = useState(true)
return (
<div className={`menu ${open ? 'open' : ''}`} onClick={setOpen(!open)}>
<div className='menu-btn'></div>
</div>
)
}
export default Menu;
推荐阅读
- html - HTML/CSS - 如何向href'd 图像添加文本?
- python-3.x - 为 requests.get 的每个新迭代更改文件名(文件下载到机器)
- postgresql - 如何在 PostgreSQL 行中读取/写入对象数组?(Golang)
- reactjs - 向 API 中的现有对象添加新属性
- python - Pytest 标记参数化与多项选择
- python - 有没有办法让流光画布图像数据显示在终端中
- javascript - 当我在浏览器上重新加载页面时,document.readyState 几乎在 1 秒内从交互变为完成(即使未加载图像
- list - 我应该在 CMake 中使用什么类型的文件或目录路径列表?
- python - 将功能应用于熊猫数据框:有没有更有效的方法?
- java - Google Admob Ad 在加载插页式广告时崩溃应用