繁体   English   中英

为什么 removeEventListener 在我的 Nuxt 应用程序中无法正常工作?

[英]Why is removeEventListener not properly working in my Nuxt app?

当我的应用程序上有搜索结果时,下面的组件会呈现,它会检查用户滚动是否在页面底部。 代码起初运行良好,但是在导航出页面并返回页面并滚动之后,我得到了错误

未捕获的类型错误:无法读取 VueComponent.handleScroll 处未定义的属性“getBoundingClientRect”

<template>
    <div class="grid-card-layout scrolling-component" ref="scrollComponent">
        <slot/>
    </div>
</template>

<script>
export default {
    methods: {
        handleScroll() {
            let element = this.$refs.scrollComponent
            if (element.getBoundingClientRect().bottom < window.innerHeight) {
                window.removeEventListener('scroll', this.handleScroll);
                return this.$emit("load-more");
            }
        },
        mountOnScroll() {
            window.addEventListener('scroll', this.handleScroll);
        }
    },
    mounted() {
        window.addEventListener('scroll', this.handleScroll);
        // Start observing the target node for configured mutations
        const observer = new MutationObserver(this.mountOnScroll);
        observer.observe(this.$refs.scrollComponent, {
            attributes: true, 
            childList: true, 
            characterData: true
        });
    },
    unmounted() {
        window.removeEventListener('scroll', this.handleScroll);
    }
}
</script>

unmounted是一个 Vue3 生命周期:https ://v3.vuejs.org/guide/composition-api-lifecycle-hooks.html

在 Vue2 中,钩子是beforeDestroy并被destroyed ,如 API 所示: https ://v2.vuejs.org/v2/api/#beforeDestroy

这是 Vue2 的生命周期图: https ://v2.vuejs.org/v2/guide/instance.html#Lifecycle-Diagram

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM