首页 > 解决方案 > 我应该在 React 清理期间删除“一次”注册的事件侦听器吗

问题描述

我应该删除这样注册的事件侦听器:

window.addEventListener('resize', callback, { once: true });

在 React 的清理过程中,如下所示:

useEffect(() => {
  return () => {
    window.removeEventListener('resize', callback, { once: true });
  };
}, []);

还是完全没有必要,因为它在被调用一次后会自动删除?用户在调用事件侦听器之前关闭浏览器的可能性很小,但它就在那里。所以我目前认为我应该在清理过程中删除它,即使事件监听器在被调用后会自动被删除。

标签: javascriptreactjseventslistenerevent-listener

解决方案


文档如下:

Once 是一个布尔值,表示在添加后最多应调用一次侦听器。如果为 true,则侦听器将在调用时自动删除。

但是在尚未调用回调并且您卸载组件并再次安装的情况下。您将有两个相同的听众。

结果,如果未调用侦听器,则必须删除它,如果调用它,则不需要删除侦听器


推荐阅读