javascript - 我应该在 React 清理期间删除“一次”注册的事件侦听器吗
问题描述
我应该删除这样注册的事件侦听器:
window.addEventListener('resize', callback, { once: true });
在 React 的清理过程中,如下所示:
useEffect(() => {
return () => {
window.removeEventListener('resize', callback, { once: true });
};
}, []);
还是完全没有必要,因为它在被调用一次后会自动删除?用户在调用事件侦听器之前关闭浏览器的可能性很小,但它就在那里。所以我目前认为我应该在清理过程中删除它,即使事件监听器在被调用后会自动被删除。
解决方案
文档如下:
Once 是一个布尔值,表示在添加后最多应调用一次侦听器。如果为 true,则侦听器将在调用时自动删除。
但是在尚未调用回调并且您卸载组件并再次安装的情况下。您将有两个相同的听众。
结果,如果未调用侦听器,则必须删除它,如果调用它,则不需要删除侦听器
推荐阅读
- docker - 在 ADD 语句中使用 Dockerfile ARG
- angular - 角路由器前缀
- ibm-doors - 使用 if else 循环的 DXL 过滤器
- mysql - 查找不运动的员工 MYSQL
- spring - Hibernate / Spring:EntityManager.lock 会按预期工作,em.find 不会
- c# - 使用 .NET 4.7.2 向 MS Teams 频道发送自动消息
- excel - Excel - 将 UNIQUE 公式引用与文本字符串相结合
- python - Python 如何管理相对路径
- c++ - 在 C++ 中反转字符串(使用递归)
- python - SQLite3 中简单选择查询(使用索引)的性能问题