vue3中实现异步组件的方法实例
使用场景一:当组件进入视窗时再进行加载
假设页面中有三个组件A、B、C
C组件中有一张图片
<template> <div class="A"> <A></A> </div> <div class="B"> <B></B> </div> <div> <C></C> </div> </template> <script setup> import A from './components/A.vue' import B from './components/B.vue' import C from './components/C.vue' </script>
打开页面:
如果一个页面中的内容非常多,用户再首次打开时并没有浏览到下方的内容,但页面必须加载完下方的内容才会显示,这无疑非常影响性能
接下来我们做一些调整
defineAsyncComponent创建一个只有在需要时才会加载的异步组件。
defineAsyncComponent是vue3提供的内置api。用于异步加载组件
但是仅靠这个api并不能完成我们所需要的功能
这里我们还需要借助vueUse中的一个api
首先我们需要安装一下vueUse的依赖
npm i @vueuse/core
我们需要使用vueUse中的useIntersectionObserver
安装完成后来修改一下我们的代码:
<template> <div class="A"> <A></A> </div> <div class="B"> <B></B> </div> <div ref="target"> <C v-if="targetIsVisible"></C> </div> </template> <script setup> import A from './components/A.vue' import B from './components/B.vue' import { defineAsyncComponent, ref } from 'vue'; import { useIntersectionObserver } from '@vueuse/core' const C = defineAsyncComponent(() => //异步引入组件 import('./components/C.vue') ) const target = ref(null) //获取需要操作的dom元素 const targetIsVisible = ref(false) //定义一个dom元素显示与隐藏开关 const { stop } = useIntersectionObserver( //定义一个函数用于控制 target, ([{ isIntersecting }]) => { //这里的isIntersecting表示的是dom元素是否进入视窗,值为true或flase console.log(isIntersecting); if (isIntersecting) { targetIsVisible.value = isIntersecting //将isIntersecting赋值给开关,即表示进入视窗就显示该dom元素 } }, ) </script>
这样就实现了异步加载C组件,在页面视窗滚动到C组件时才会加载C组件。
总结
到此这篇关于vue3中实现异步组件的文章就介绍到这了,更多相关vue3实现异步组件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
vue使用Element的Tree树形控件实现拖动改变节点顺序方式
这篇文章主要介绍了vue使用Element的Tree树形控件实现拖动改变节点顺序方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-12-12ant desing vue table 实现可伸缩列的完整例子
最近在使用ant-design-vue做表格时,遇到要做一个可伸缩列表格的需求,在网上一直没有找到好的方法,于是小编动手自己写个可以此功能,下面小编把ant desing vue table 可伸缩列的实现代码分享到脚本之家平台供大家参考2021-05-05ruoyi-vue3 集成aj-captcha实现滑块、文字点选验证码功能
这篇文章主要介绍了 ruoyi-vue3 集成aj-captcha实现滑块、文字点选验证码,本文基于后端RuoYi-Vue 3.8.7 和 前端 RuoYi-Vue3 3.8.7,集成以AJ-Captcha文字点选验证码为例,不需要键盘手动输入,极大优化了传统验证码用户体验不佳的问题,感兴趣的朋友一起看看吧2023-12-12vue3中emit('update:modelValue')使用简单示例
这篇文章主要给大家介绍了关于vue3中emit('update:modelValue')使用的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2022-09-09vue Router(v3.x) 路由传参的三种方式场景分析
vue 路由传参的使用场景一般都是应用在父路由跳转到子路由时,携带参数跳转,传参方式可划分为 params 传参和 query 传参,而 params 传参又可分为在 url 中显示参数和不显示参数两种方式,这就是vue路由传参的三种方式,感兴趣的朋友跟随小编一起看看吧2023-07-07
最新评论