vue 创建监听,和销毁监听(addEventListener, removeEventListener)
最近在做一个有关监听scroll的功能, 发现我添加监听之后一直不起作用:
-
mounted() {
-
window.addEventListener("scroll", this.setHeadPosition); //this.setHeadPosition方法名
},
后来发现要在后面添加一个true之后才行:
-
mounted() {
-
window.addEventListener("scroll", this.setHeadPosition, true);
-
},
而在离开是的时候需要销毁监听: (在destroyed里面销毁), 否则监听会一直存在, 因为这是单页面应用, 页面并未关闭.
-
destroyed() {
-
window.removeEventListener("scroll", this.setHeadPosition, true);
-
},
在销毁的时候一定也要加上true, 否则销毁不起作用.
如果该组件时被keep-alive组件包裹,切换到该组件,触发activated钩子函数, 切换到其他组件触发deactivated钩子函数, 但是组件并没有销毁
<keep-alive > <router-view></router-view> </keep-alive>
activated() { // 全局绑定滚动事件, window.addEventListener("scroll", this.handleScroll); }, deactivated() { // 组件消失,解绑scroll事件 window.removeEventListener("scroll", this.handleScroll); }
转载于:https://www.cnblogs.com/lianxisheng/p/10802250.html