我无法从事件监听器中删除名为 ,不可修改(常量)的函数。
someFunction() {
const listener = () => {
console.log('should not run');
}
document.addEventListener('touchmove', listener);
document.removeEventListener('touchmove', listener);
}
代码运行时,将添加但不删除侦听器。
我们将gatsby用于我们的项目,并部署到netlify进行测试。当我在localhost上进行开发时,不会发生此错误,但是在netlify和Prod上会发生。
我的猜测是gats会通过某种方式进行更改以使其无法删除文档上的侦听器,但是我从未听说过这种可能性!
此函数不可修改,并且第三个参数中没有传递任何选项,因此我希望此侦听器被删除。它不是。这是我唯一引用函数 listener 的时候,我专门创建了它来隔离问题。
我真的很想知道为什么会发生这种情况,当我在线查看为什么无法删除eventListener时,总是因为传递的函数是匿名的或不相同,这是一个命名的const。 ,仅被引用一次,因此在removeEventListener上应该完全相同。
要澄清: 我链接的代码代表了我正在运行的代码,在someFunction中没有发生任何多余的事情,我出于调试目的将它们全部删除(以隔离问题) TJ Crowder提到的不是我的代码中发生的事情,因为removeEventListener从同一函数声明中运行