当你给一个元素添加事件监听后,需要在组件销毁时给他清除事件监听,有同学就直接想到了这不是很简单吗?直接用removeEventListener就可以了,但实际上有些情况下会不生效:
//监听时
document.getElementById("idName").addEventListener('scroll',()=>{
监听滚动后的函数代码
})
清除监听
document.getElementById("idName").removeEventListener(‘scroll’,()=>{.......})
以上这种写法就是错误的,监听时不能直接在后面写箭头函数,因为这样它不知道要清除哪个事件函数,正确的写法应该是如下(需要将滚动执行函数单独拎出定义成一个有名函数):
//监听时
const scrollEvent =()=>{
//滚动时的函数执行代码
}
document.getElementById("idName").addEventListener('scroll',scrollEvent)
清除监听
document.getElementById("idName").removeEventListener(‘scroll’,scrollEvent)