删除事件监听器手动做出反应

时间:2019-07-30 14:40:18

标签: reactjs react-hooks react-router-dom

我有一个滚动事件侦听器,我想根据页面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以便将其从侦听器中删除?

1 个答案:

答案 0 :(得分:4)

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

:old发生更改时,它将删除事件监听器。

props.location.pathname