1.npm i @vueuse/core 或者 yarn add @vueuse/core
2. 创建公共方法文件夹 src/hooks / index.js建议起名
import { useIntersectionObserver } from '@vueuse/core'
import { ref } from 'vue'
export const useLazyData = (apiFn) => {
const result = ref([])
const target = ref(null)
const { stop } = useIntersectionObserver( target, ([{ isIntersecting }], observerElement) => {
if (isIntersecting) {
stop()
apiFn().then(data => {
result.value = data.result
})
}
},
{
threshold: 0
})
return { result, target }
}
-- 以上部分是封装的懒加载函数 --
-- 下面的是使用 --
import { useLazyData } from '@/hooks'
export default {
给需要懒加载的dom绑定ref =“target”
const {result, target} = useLazyData(findNew) (api接口)
return {goods(这是我循环的数据列表) : result, target}
如果你循环的数据就是result就不需要 goods 这个
}