【发布时间】:2021-07-21 19:22:57
【问题描述】:
我正在尝试在“keydown”上使用eventListener 来更新我的状态(一个名为showMenu 的布尔值)。
我把它放在useEffect 上,但它不能正常工作,我不知道为什么......
如果我将 showMenu 放在我的 useEffect 末尾的数组上,它会以指数方式重新渲染组件。
如果我不将showMenu 放在useEffect 的末尾,showMenu 只会更新一次(从 false 到 true)
这是以指数方式重新渲染的代码
const [showMenu, setShowMenu] = useState(false);
useEffect(() => {
window.addEventListener("keydown", (e) => handleMenu(e));
return () => {
window.removeEventListener("keydown", (e) => handleMenu(e));
};
}, [showMenu]);
const handleMenu = (e) => {
if (e.key == "m") {
setShowMenu(!showMenu);
}
};
【问题讨论】:
标签: javascript reactjs dom dom-events