Javascript 即使使用useEffect挂钩';也未在React中删除事件侦听器;s返回回调
我有一个组件,它在初始化期间注册一个密钥事件。 此事件触发API调用以获取随机数据Javascript 即使使用useEffect挂钩';也未在React中删除事件侦听器;s返回回调,javascript,reactjs,react-hooks,dom-events,Javascript,Reactjs,React Hooks,Dom Events,我有一个组件,它在初始化期间注册一个密钥事件。 此事件触发API调用以获取随机数据 useEffect(() => { const keyUpEvent = (event) => { if (event.code === "Enter") { event.preventDefault(); fetchRandomData(); } }; document.addEventListene
useEffect(() => {
const keyUpEvent = (event) => {
if (event.code === "Enter") {
event.preventDefault();
fetchRandomData();
}
};
document.addEventListener("keyup", keyUpEvent);
fetchRandomData();
return () => {
setChord({});
document.removeEventListener("Keyup", keyUpEvent);
};
}, []);
但即使使用上面的代码,当我在页面之间导航并通过按键触发事件(Enter键)时,事件也不会被删除
根据下图,当我在多个页面导航后按一次键时,就会发生这种情况。(内存泄漏)
问题:
为什么react不删除已注册的事件?删除事件侦听器的正确方法是什么
您的资本化不正确。您只需将
removeEventListener
中的Keyup
更改为Keyup我真的很抱歉。找不到差异,并且我的控制台中没有错误。顺便说一句,它起作用了。我的错。谢谢你,反正。。。