删除事件侦听器手动反应挂钩



我有一个滚动事件侦听器,我想根据页面URL将其删除,如何在挂钩组件中使用它?

 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]);

相关内容

  • 没有找到相关文章

最新更新