vue3中实现异步组件的方法实例

 更新时间:2023年06月07日 15:25:13   作者:前端小顾  
前端开发经常遇到异步的问题,请求函数、链接库等,下面这篇文章主要给大家介绍了关于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实现异步组件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vuejs从数组中删除元素的示例代码

    Vuejs从数组中删除元素的示例代码

    这篇文章主要介绍了Vuejs从数组中删除元素的示例代码,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • vue 弹框产生的滚动穿透问题的解决

    vue 弹框产生的滚动穿透问题的解决

    这篇文章主要介绍了vue 弹框产生的滚动穿透问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • Vue3之父子组件异步props数据的传值方式

    Vue3之父子组件异步props数据的传值方式

    这篇文章主要介绍了Vue3之父子组件异步props数据的传值方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • vue在使用element组件出现<el-input>标签无法输入的问题

    vue在使用element组件出现<el-input>标签无法输入的问题

    这篇文章主要介绍了vue在使用element组件出现<el-input>标签无法输入的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • vue el-table实现动态添加行和列具体代码

    vue el-table实现动态添加行和列具体代码

    最近遇到一个动态增加行和列的需求,所以这里给大家总结下,这篇文章主要给大家介绍了关于vue el-table实现动态添加行和列的相关资料,需要的朋友可以参考下
    2023-09-09
  • vue项目下,如何用命令直接修复ESLint报错

    vue项目下,如何用命令直接修复ESLint报错

    这篇文章主要介绍了vue项目下,如何用命令直接修复ESLint报错,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • 浅析Vue.js 中的条件渲染指令

    浅析Vue.js 中的条件渲染指令

    这篇文章主要介绍了Vue.js 中的条件渲染指令,Vue.js 中的条件渲染指令可以根据表达式的值,来决定在 DOM 中是渲染还是销毁元素或组件。本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-11-11
  • 使用Webpack 搭建 Vue3 开发环境过程详解

    使用Webpack 搭建 Vue3 开发环境过程详解

    这篇文章主要介绍了使用Webpack 搭建 Vue3 开发环境过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • vue.js移动数组位置,同时更新视图的方法

    vue.js移动数组位置,同时更新视图的方法

    下面小编就为大家分享一篇vue.js移动数组位置,同时更新视图的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • vue瀑布流组件实现上拉加载更多

    vue瀑布流组件实现上拉加载更多

    这篇文章主要为大家详细介绍了vue瀑布流组件实现上拉加载更多,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03

最新评论