gpt4 book ai didi

reactjs - 删除事件监听器手动 react 钩子(Hook)

转载 作者:行者123 更新时间:2023-12-03 13:30:21 25 4
gpt4 key购买 nike

我有一个滚动事件监听器,我想根据页面 URL 删除它,如何在钩子(Hook)组件中使用它来处理它?<​​/p>

 useEffect(() => {
function handleScrollEvent() {
if (window.scrollY > 100) {
setHeaderIsVisible(true);
} else {
setHeaderIsVisible(false);
}
}
if (props.location.pathname === "/") {

window.addEventListener("scroll", handleScrollEvent, true);
} else {
window.removeEventListener("scroll", handleScrollEvent, true);
}
}, [props.location.pathname]);

我应该在哪里定义handleScrollEvent以将其从监听器中删除?

最佳答案

您需要做的是每次添加它时,也将其删除。

props.location.pathname更改时,它将删除事件监听器。

useEffect(() => {
if (props.location.pathname === "/") {
function handleScrollEvent() {
if (window.scrollY > 100) {
setHeaderIsVisible(true);
} else {
setHeaderIsVisible(false);
}
}

window.addEventListener("scroll", handleScrollEvent, true);
// every time you add it, you also remove it when props.location.pathname changes
return () => {
window.removeEventListener("scroll", handleScrollEvent, true);
}
}
}, [props.location.pathname]);

关于reactjs - 删除事件监听器手动 react 钩子(Hook),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57274282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com