<template>
<div style="width:100%;height: 2000px;background-color: aqua;"></div>
时空的距离是开机登陆我看见了乌克兰我看1时空的距离是开机登陆我看见了
乌克兰我看1时空的距离是开机登陆我看见了乌克兰我看1时空的距离是开机登陆我看见了乌克兰我看1时空的距离是开机登陆我看见
了乌克兰我看1时空的距离是开机登陆我看见了乌克兰我看1时空的距离是开机登陆我看见了乌克兰我看1时空的距离是开机登陆我看见了乌克兰我看
1时空的距离是开机登陆我看见了乌克兰我看1时空的距离是开机登陆我看见了乌克兰我看1时空的距离是开机登陆我看见了乌克兰我看1时空的距离是开机登
陆我看见了乌克兰我看1时空的距离是开机登陆我看见了乌克兰我看1时空的距离是开机登陆我看见了乌克兰我看1时空的距离是开机登陆我看见了乌克兰我看1时空的距离
是开机登陆我看见了乌克兰我看
<div style="width:100%;height:500px;background-color: blanchedalmond;"></div>
<div ref="tar">
<UI v-if="visabled" />
</div>
</template>
<script setup lang="ts">
import { ref,defineAsyncComponent,watchEffect,onUnmounted } from 'vue'
import { useIntersectionObserver } from '@vueuse/core';
const UI = defineAsyncComponent(() =>
import('./demo.vue')
)
const tar = ref(null)
const visabled = ref(false)
const {stop} = useIntersectionObserver(
tar,
([{isIntersecting}]) =>{
if(isIntersecting){
console.log(isIntersecting)
visabled.value = isIntersecting
}
}
)
console.log(visabled.value)
watchEffect(() => {
if (visabled.value) {
stop() //当加载过一次就取消监视,以免每次滑动页面重复请求加载
} else {
}
})
onUnmounted(()=>{
stop(); // 停止监控
})
</script>
<style scoped>
.read-the-docs {
color: #888;
}
</style>
VUE3中@vueuse/core包useIntersectionObserver懒加载功能
最新推荐文章于 2025-05-30 09:00:00 发布
该代码示例展示了如何在Vue中使用`defineAsyncComponent`动态加载组件以及利用`useIntersectionObserver`观察器监测元素是否进入视口,实现按需加载。当元素进入视口时,会加载`demo.vue`组件,并在加载后停止监控,优化性能。
901

被折叠的 条评论
为什么被折叠?



