我正在添加一些事件监听器来检查它是否是触摸设备。所以我希望这些事件监听器一直存在,直到页面重新加载。
我应该仍然删除事件监听器(removeEventListener('touchstart', myFunction)
)吗?如果是的话,为什么要这样做?
这是在VueJS应用程序的根实例中。我正在created部分中添加事件监听器。
我正在添加一些事件监听器来检查它是否是触摸设备。所以我希望这些事件监听器一直存在,直到页面重新加载。
我应该仍然删除事件监听器(removeEventListener('touchstart', myFunction)
)吗?如果是的话,为什么要这样做?
这是在VueJS应用程序的根实例中。我正在created部分中添加事件监听器。
你应该在销毁添加事件监听器的组件之前移除它们的主要原因是,一旦你的组件消失了,当事件发生时应该执行的函数也会消失(在大多数情况下)。因此,如果你绑定了监听器的元素比组件存在时间更长,当事件发生时你将会得到一个错误,因为要执行的代码找不到了。
虽然这通常是一个边缘案例,但它往往会产生特别难以调试的错误。
此外,在单页面应用程序中(这是Vue应用程序最常见的用法),不移除监听器可能会迅速成为性能问题。
重要提示:只有您通过DOM操作添加的事件(例如:el.addEventListener()
)需要被移除。Vue会自动清理自己创建的事件(例如:@click
,@my-custom-event
等)。