fix: client-io-component.ts

This commit is contained in:
Michael Brevard 2024-03-24 19:52:16 +02:00 committed by GitHub
parent ae2bb27ac0
commit 6a32dc1c9e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,26 +1,32 @@
import { defineComponent, ref } from "vue" import { ref, onMounted, onUnmounted, defineComponent } from 'vue';
export default defineComponent({ export default defineComponent({
emits: ['intersected'], setup(props, { emit }) {
setup() { const intersectionTarget = ref(null);
const data = ref(null); let observer = null;
const isIntersecting = ref(false);
const target = ref(null); const intersectionCallback = (entries) => {
let observer: Ref<IntersectionObserver | null> = ref(null)
onMounted(() => {
const observer = new IntersectionObserver(entries => {
entries.forEach(entry => { entries.forEach(entry => {
if (entry.isIntersecting) { if (entry.isIntersecting) {
isIntersecting.value = true; emit('intersect');
emit('intersected'); observer.unobserve(entry.target);
observer.unobserve(target.value);
} }
}); });
};
onMounted(() => {
observer = new IntersectionObserver(intersectionCallback);
observer.observe(intersectionTarget.value);
}); });
observer.observe(target.value);
onUnmounted(() => {
if (observer) {
observer.disconnect();
}
}); });
return { return {
isIntersecting intersectionTarget
}; };
} }
}); });