1.什么是组件数据懒加载

组件数据懒加载指的是当组件进入可视区域后在加载数据,可以使页面数据加载更快和节约资源

2.组件数据懒加载主体思路

使用@vueuse/core中的useIntersectionObserver函数来实现监听进入可视区域行为,但是必须配合vue3.0的组合API方式才能实现

3.项目中代码实现

3.1.首先新建单独文件夹存放数据懒加载方法hooks/index.vue

// 提供复用逻辑的函数
import { useIntersectionObserver } from '@/vuese/core'
import { ref } from 'vue'

/**
 * 数据懒加载函数
 * @param {target} target 监听的目标元素,必须是DOM对象
 * @param {apiFn}   api函数,需要懒加载的请求
 * @returns 
 */
export const uselazyData = (target, apiFn) => {
  const result = ref(null);
  const { stop } = useIntersectionObserver(
    target, // 监听的目标元素
    ([{ isIntersecting }]) => {
      // 是否进入可视区
      if (isIntersecting) {
        stop() // 停止监听
        // 调用API函数获取数据
        apiFn().then(data => {
          result.value = data.result
        })
      }
    },
    {
      threshold: 0
    }
  )
  return result
}

3.2 在需要进行懒加载的文件中导入

<div ref="target">


import { findNew } from "@/api/home.js";
import { uselazyData  } from "@/hooks/index.js"
setup() {
    // 获取新鲜好物数据
    const target = ref(null); // 获取需要懒加载数据的DOM
    const result =  uselazyData(target, findNew)
    return {goods:result, target };
GitHub 加速计划 / vu / vue
207.54 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:2 个月前 )
73486cb5 * chore: fix link broken Signed-off-by: snoppy <michaleli@foxmail.com> * Update packages/template-compiler/README.md [skip ci] --------- Signed-off-by: snoppy <michaleli@foxmail.com> Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 4 个月前
e428d891 Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐