在vue中如何使用addEventListener添加事件、removeEventListener移除事件

最近在项目中需要用到addEventListener监听滚动条滚动的高度,所以就研究了一下在vue中是怎么进行事件监听的。

添加事件

给要添加事件的元素加上ref属性

在mounted中添加事件

    mounted() {
      this.$refs.box.addEventListener('scroll',()=>{
        console.log('scroll',this.$refs.box.scrollTop)
      });
    }

这样就添加成功了!
在这里插入图片描述

移除事件

如果要移除已添加的事件,removeEventListener中传入的方法必须和addEventListener中传入的是同一个方法才能成功移除,所以在添加时就不能用匿名函数啦。需改成如下写法

    mounted() {
      this.$refs.box.addEventListener('scroll',this.scrollEvent);
    },
    methods:{
      scrollEvent(){
        console.log('scroll',this.$refs.box.scrollTop)
      }
    }

这里要注意 传入的方法 this.scrollEvent 后面不能加括号,否则无法成功添加

组件销毁前移除事件

    beforeDestroy() {
      this.$refs.box.removeEventListener('scroll',this.scrollEvent);
    }

如果是keep-alive组件,可以用下面这种方式

  activated() {
    this.$refs.box.addEventListener('scroll', this.scrollEvent);
  },
  deactivated(){
    this.$refs.box.removeEventListener('scroll',this.scrollEvent);
  },

另外,addEventListener还可以给一个元素添加多个事件,并且不会覆盖已存在的事件,这里就不多展开了~

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐