vue3实现组件数据懒加载
vue
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
项目地址:https://gitcode.com/gh_mirrors/vu/vue
免费下载资源
·
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 个月前
更多推荐
已为社区贡献1条内容
所有评论(0)