【发布时间】:2021-08-26 13:12:09
【问题描述】:
我有一个组件在初始化期间注册一个键事件。 此事件触发 API 调用以获取随机数据。
useEffect(() => {
const keyUpEvent = (event) => {
if (event.code === "Enter") {
event.preventDefault();
fetchRandomData();
}
};
document.addEventListener("keyup", keyUpEvent);
fetchRandomData();
return () => {
setChord({});
document.removeEventListener("Keyup", keyUpEvent);
};
}, []);
但即使使用上面的代码,当我在页面之间导航并通过击键( Enter KEY )触发事件时,事件也不会被删除。
根据下图,当我在多个页面导航后按一次键时会发生这种情况。 (内存泄漏)
问题:
为什么 react 没有删除注册的事件?删除事件侦听器的正确方法是什么..?
【问题讨论】:
标签: javascript reactjs react-hooks dom-events