当前位置: 首页 > article >正文

Vue引入异步组件

defineAsyncComponent 函数:异步引入组件。

Suspense 标签:异步引入组件时,显示默认的内容。

 异步引入组件的基本使用:

 异步引入组件:

import { defineAsyncComponent } from 'vue';
const Child = defineAsyncComponent(() => {
  return import('../components/Child.vue');
});

设置组件默认显示的内容:

<Suspense>
  <!-- 如果组件加载成功,就显示 default 中的内容 -->
  <template v-slot:default>
    <Child></Child>
  </template>
  <!-- 如果组件正在加载中,就显示 fallback 中的内容 -->
  <template v-slot:fallback>
    <h3>加载中,请稍等...</h3>
  </template>
</Suspense>

:Suspense 标签中有两个插槽 default 和 fallback,插槽名是固定的,不能随意更改。

异步引入组件的作用:

创建 Child 子组件:

<template>
    <div class="child">
        <h3>我是Child组件(子组件)</h3>
    </div>
</template>

<script>
export default {
    name: "Child"
}
</script>
<style scoped>
.child {
    background-color: red;
    padding: 10px;
}
</style>

创建 Parent 父组件:通过静态引入的方式使用 Child 组件。

<template>
  <div class="parent">
    <h3>我是Parent组件(父组件)</h3>
    <Child></Child>
  </div>
</template>

<script>
// 静态引入【同步引入】
import Child from '../components/Child';
export default {
  name: "Parent",
  components: { Child }
}
</script>

<style scoped>
.parent {
  background-color: aqua;
  padding: 10px;
}
</style>

:在控制台的 Network 中,将网络调成 Slow 3G(慢的 3G 网络)。刷新页面后,我们会发现父组件和子组件是一起显示的。

:假如子组件中的数据量特别大,那么静态引入时,也会导致父组件延迟显示。

修改 Parent 父组件:通过异步引入的方式使用 Child 组件。

<template>
  <div class="parent">
    <h3>我是Parent组件(父组件)</h3>
    <Child></Child>
  </div>
</template>

<script>
// 引入 defineAsyncComponent 函数
import { defineAsyncComponent } from 'vue';
// 动态引入【异步引入】
const Child = defineAsyncComponent(() => {
  return import('../components/Child.vue');
});
export default {
  name: "Parent",
  components: { Child }
}
</script>

<style scoped>
.parent {
  background-color: aqua;
  padding: 10px;
}
</style>

:同样调成 Slow 3G 网络,我们会发现父组件显示出来之后,子组件才显示。

 

原创作者:吴小糖

创作时间:2023.10.27


http://www.kler.cn/news/107501.html

相关文章:

  • STM32F4X SDIO(二) SDIO协议
  • 使用Hystrix实现请求合并,降低服务器并发压力
  • Jquery 如何获取子元素。如何找到所有 HTML select 标签的选中项。jQuery 里的 ID 选择器和 class 选择器有何不同
  • 科聪协作(复合)移动机器人整体解决方案
  • 【JVM】类加载器
  • 指针进阶(1)
  • ce从初阶到大牛(两台主机免密登录)
  • 22、Python -- 创建对象和使用对象
  • 【394.字符串解码】
  • element-ui vue2 iframe 嵌入外链新解
  • STM32F4X SDIO(一) SD卡介绍
  • 星闪技术 NearLink 一种专门用于短距离数据传输的新型无线通信技术
  • 工业自动化产品抗干扰笔记
  • 【Elasticsearch】es脚本编程使用详解
  • OpenCV学习(六)——图像算术运算(加法、融合与按位运算)
  • 计算机视觉 激光雷达结合无监督学习进行物体检测的工作原理
  • [Unity]给场景中的3D字体TextMesh增加描边方案一
  • 指针仪表读数YOLOV8NANO
  • GPT出大错了!原来GPT不是万能的!这就是人类存在的意义!
  • sqoop和flume简单安装配置使用
  • Systemverilog中使用interface连接testbench和dut的端口
  • 铁轨(Rails, ACM/ICPC CERC 1997, UVa 514)rust解法
  • Kubernetes - Ingress HTTP 负载搭建部署解决方案(新版本v1.21+)
  • [双指针] Leetcode 283.移动零和1089.复习零
  • 设计模式:访问者模式(C#、JAVA、JavaScript、C++、Python、Go、PHP)
  • AT32固件库外设使用,ArduinoAPI接口移植,模块化
  • windows服务器环境下使用php调用com组件
  • 【springBoot】博客系统
  • 10000字!图解机器学习特征工程
  • Vmware下的虚拟机NAT连接后仍然木有网络