Vue对全局事件的解绑

在我们编写代码的过程中,如果没有对事件进行及时的解绑,可能导致代码出现大量的bug。
如果绑定的仅仅是某个组件中的元素,那么不会对全局产生影响,但是如下面的代码,若对window这个全局对象进行了绑定,则会导致问题的出现。当我们离开这个页面去其他页面时,这个绑定事件仍然在起作用(尽管页面已经不再是handleScroll这个函数所在的组件,但window是全局对象)。

activated(){
        // 绑定scroll事件,一旦scroll,执行handleScroll事件
        window.addEventListener('scroll', this.handleScroll)
    },
}

那么我们就需要对这个事件进行解绑。解绑也非常的简单,只需要在同一组件的script部分加入一个deactivated生命周期函数即可。
deactivated生命周期函数在页面即将被隐藏或者即将被替换为其他页面时会起作用。这样当我们离开该组件的页面时,这个绑定事件就不再会对其他页面产生影响了。

    activated(){
        // 绑定scroll事件,一旦scroll,执行handleScroll事件
        window.addEventListener('scroll', this.handleScroll)
    },
    deactivated () {
        window.removeEventListener('scroll', this.handleScroll)
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  •   JavaScript 与 HTML 之间的交互是通过事件实现的。   事件,就是文档或浏览器窗口中发生的一些特...
    霜天晓阅读 8,862评论 1 11
  • 作为一个合格的开发者,不要只满足于编写了可以运行的代码。而要了解代码背后的工作原理;不要只满足于自己的程序...
    六个周阅读 12,677评论 1 33
  • 问题的产生:在详情页面,我们对拖动页面绑定了scroll事件,实现对header区域的渐隐渐现效果,如图1。不过这...
    悄敲阅读 3,449评论 0 1
  • 前言 记录平时学到的知识,标题写的大气一点,也算是给自己一点鼓励,希望在技术这条路可以远走越远,路越走越宽~ 文中...
    徐国军_plus阅读 5,579评论 3 28
  • vue概述 在官方文档中,有一句话对Vue的定位说的很明确:Vue.js 的核心是一个允许采用简洁的模板语法来声明...
    li4065阅读 12,007评论 0 25