最近在做一個有關監聽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