Vue3组件数据懒加载

2 篇文章 0 订阅
1 篇文章 0 订阅
  • 单张页面数据较多时,可以使用组件数据懒加载,减少网络请求,提高页面的响应速度。
  1. 安装npm i @vueuse/core -S 库,用到其中的 useIntersectionObserver 来实现监听进入可视区域行为,配合vue3.0的组合API的方式实现。
  2. 封装方法 index.js
//提供复用逻辑
import { useIntersectionObserver } from "@vueuse/core"
import {ref} from 'vue'
// 数据懒加载函数
// target 要监听的 Dom 对象
// apiFn API函数
export const useLazyData = (apiFn) => {
    const result = ref([])
    const target=ref(null)
    
    const { stop } =useIntersectionObserver(
        target,
        ([{ isIntersecting }], observerElement) => {
            console.log(observerElement);
            //isIntersecting是否进入可视区
            if (isIntersecting) {
                stop()//停止观察
                //调用api函数获取数据
                apiFn().then(data => {
                    result.value=data
                })
            }
        },
        // 配置选项
        {
            threshold:0  //冒出之后就触发
        }
    )
    return {result,target}
}
  1. 调用方法

    导入封装的 index.js 文件 import { useLazyData } from 'index.js'
    在需要懒加载数据的组件上加入ref <myComponent ref='target' />

    setup(){ 
    	const { target,result } =useLazyData( FnApi ) //FnApi 请求函数
    	return { target , result }
    }
    
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值