Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
436 views
in Technique[技术] by (71.8m points)

vue 使用防抖函数,绑定事件如何优雅卸载?

如下 throttle 是一个高阶函数,返回加了防抖功能的原函数

但是这个卸载的话 throttle() 返回的新函数是否要保存个变量呢?
因为卸载的时候要用到

请问怎么写更合适呢?

mounted() {
    this.$refs['xxx'].addEventListener("scroll", throttle(this.onScroll, 500));
},
destroyed() {
   // 卸载事件
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

为什么不直接让onScroll是throttle的结果呢


methods: {
  onScroll: _throttle(xxx)
}

当然你现在的写法不想挂一个属性在this上,也可以直接这样写:

mounted() {
    const func = throttle(this.onScroll, 500)
    this.$refs['xxx'].addEventListener("scroll", func)
    this.$on('hook:beforeDestroy', () => {
        this.$refs['xxx'].removeEventListener("scroll", func)
    })
},

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...