销毁了滚动轴监听事件,跳转页面仍然报错?

跳转用的this.$router.push()

改用beforeDestroy事件试试,destroyed后对应的事件和处理函数应该被注销了,再取消监听事件不对应导致没法取消

模拟了下可以注销呢,你如何销毁vue的呢?

<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<div id="d" style="height:2000px"><input type="button" value="destroy" v-on:click="destroy" />{{a}}</div>
<script defer>
    var vm=new Vue({
        el:'#d',
        data: {
            a: 1
        },
        mounted: function () {

            this.$nextTick(function () {
                console.log('$nextTick')
                window.addEventListener('scroll', this.handlescroll)
            });
            window.addEventListener('scroll', this.handlescroll, true);

        },
        destroyed() {
            console.log('destroyed')
            window.removeEventListener('scroll', this.handlescroll);
            window.removeEventListener('scroll', this.handlescroll, true)
        },
        methods: {
            handlescroll() {
                console.log(new Date().toLocaleString())
            },
            destroy() {
                console.log('call destroy')
                this.$destroy();
            }
        }
    })
</script>

 

改用beforeDestroy事件试试,destroyed后对应的事件和处理函数应该被注销了,再取消监听事件不对应导致没法取消

先确定这个移除生效了。如果确实生效了,那就是this.handelScroll方法有问题。

destroyed

我这里有2个监听事件,因为引入了animate.css,一个是动画,另一个是随着滚动轴滑动顶掉遮罩层

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632