vue3的组件数据懒加载

vue3的组件数据懒加载

使用场景: 如果页面过长,位于可视窗口之外的组件,用户可能根本没有机会看到,这类组件没有必要一上来就加载(网络层面的优化,只有进入视口才会获取数据)

基础思路: 监听组件是否已经进入到可视区域,只有进入可视区域才正式发起ajax请求(不再由声明周期钩子函数决定)

技术实现: 

       1. 如何知道组件进入可视区域   useIntersectionObserver() 

       2. 在达到条件之后,发送ajax请求

       3. 在首次数据加载后立刻停止监听

注意点:

       1. target  ref对象

       2. 正常情况下,每次进入可视区域移出可视区域都会再次回调

       3. 正常逻辑下,不应该执行多次,可以使用stop在执行了首次加载后,停止加载

// 封装监听目标元素进入视口的通用逻辑
import { ref } from 'vue'
// 引入监听api的方法
import { useIntersectionObserver } from '@vueuse/core'

export function useObserver(apiFn){
  // 监听的目标对象
  const target = ref (null)
  // stop 是一个可执行的方法,调用就会停止监听
  // 不管元素进入还是离开视口区域都不会在执行回调函数
  // 注意: 不会只监听一次,只有进入视口或者离开视口回调函数都会执行
  const { stop } from useIntersectionObserver(
    // 监听目标元素
    target,
    // isIntersecting 布尔值 代表当
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值