190508 TIL Vue.js - Infinite Loading

» 1막, TIL (Today I Learned), Vue.js

Vue.js - Infinite Loading

<template>
    <div class="observer"/>
</template>

<script>
export default {
    name: 'Observer',
    props: ['options'],
    data: () => ({
        observer: null,
    }),
    mounted() {
        const options = this.options || {};
        this.observer = new IntersectionObserver(([entry]) => {
            if (entry && entry.isIntersecting) {
                this.$emit('intersect');
            }
        }, options);
        this.observer.observe(this.$el);
    },
    destroyed() {
        this.observer.disconnect();
    },
};
</script>

<style scoped>
    .observer {
        height: 2px;
        position: relative;
        z-index: -9999;
    }
</style>
  • 제대로 작동이 안되서 찾아보니 Intersection Observer는 height 같은 값이 무조건 있어야 한다고! height을 추가했더니 잘 작동됐다.

May-13-2019 12-26-55