vue3 设置 表单或者页面 懒加载 (或者组件的异步加载)

用到的工具库  vueUse 和 useIntersectionObserver

1.UseIntersectionObserver 函数参数:

observerList: 由被观察目标所组成的数组,数组项是由React.createRef构建出来的对象

callback: 当目标元素被曝光所需要触发的函数,该函数接受一个参数indexList,由被曝光元素在observerList数组中的索引组成

infinite:是否持续观察目标元素,默认值为false。(因为曝光打点一般只需上报一次)

opt:可以自定义曝光条件(值的构成参考MDN),默认为{ threshold: [1] },只有当目标元素完全暴露在可视区内才触发回调

2.UseIntersectionObserver 返回值:

返回一个数组,数组的第一项元素由React的useState所返回。

 

示例:

npm i @vueuse/core
import { useIntersectionObserver } from '@vueuse/core'

const roomPhoto = ref<any>(null)
const  targetIsVisible= ref(false) 
const { stop } = useIntersectionObserver( roomPhoto, ([{ isIntersecting }], observerElement) => {
    targetIsVisible.value = isIntersecting }, )
)
<div ref='target'> <C v-if='targetIsVisible'></C> </div>
	    

  

posted @ 2024-05-23 17:20  沁猿春  阅读(454)  评论(0编辑  收藏  举报