所有分类
  • 所有分类
  • 后端开发
Vue3异步组件:介绍下Suspense的使用方法

Vue3异步组件:介绍下Suspense的使用方法

运行环境:Windows
所需软件:Word
资源类型:简历
资源下载
仅限注册用户下载,请先
解压密码:www.icz.com 使用版权:资源收集于网络,版权归原创者所有

在等待异步组件时,suspense会渲染一些额外的内容,让用户有更好的体验。

官网提到他属于实验性功能:
<Suspense> 这是一个实验性功能。在稳定之前,它可能不会最终成为稳定功能 API 也可能发生变化。
<Suspense> 它是一个内置组件,用于协调组件树中异步依赖的处理。它允许我们在组件树上层等待多个嵌套异步依赖项分析,并在等待时渲染加载状态。

这意味着该组件用于在等待异步组件时渲染一些额外的内容,使应用程序有更好的用户体验

要了解 <Suspense> 我们需要想象解决的问题以及它是如何与异步依赖相互作用的。

<Suspense>
└─ <Dashboard>
   ├─ <Profile>
   │  └─ <FriendStatus>(组件有异步 setup())
   └─ <Content>
      ├─ <ActivityFeed> (异步组件)
      └─ <Stats>(异步组件)

为了渲染它们,必须首先分析一些异步资源。如果没有, <Suspense>,每个人都需要处理自己的加载、错误报告和完成状态。在最坏的情况下,我们可能会在页面上看到三个旋转的加载状态,并在不同的时间显示内容。

有了 <Suspense> 组件完成后,我们可以在等待整个多层次组件树中各种异步依赖获取结果时,在顶层显示加载或加载失败的状态。

接下来,让我们举一个简单的例子:

首先需要引入异步组件

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

一些简单的是用组件异步加载的效果

Home父组件代码如下:

<template>
  <div class="home">
    <h3>我是Home组件</h3>
    <Suspense>
       <template #default>
        <Child />
      </template>
      <template v-slot:fallback>
        <h3>Loading...</h3>
      </template>
    </Suspense>
  </div>
</template>
 
<script >
// import Child from './components/Child///静态引入
import { defineAsyncComponent  } from "vue";
const Child = defineAsyncComponent(() => import("../components/Child"));
export default {
  name: "",
  components: { Child },
};
</script>
 
<style>
.home {
  width: 300px;
  background-color: gray;
  padding: 10px;
}
</style>

Child自组件

<template>
  <div class="child">
    <h3>我是Child组件</h3>
    name: {{user.name}}
    age: {{user.age}}
  </div>
</template>

<script>
import { ref } from "vue";
export default {
  name: "Child",
  async setup() {
    const NanUser = () => {
      return new Promise((resolve, reject) => {
        setTimeout(() => {
          resolve({
            name: "NanChen",
            age: 20,
          });
        },2000);
      });
    };
    const user = await NanUser();
    return {
      user,
    };
  },
};
</script>

<style>
.child {
  background-color: skyblue;
  padding: 10px;
}
</style>

组件根据插槽机制进行区分, #default 插槽中的内容是您需要渲染的异步组件; #fallback 在您指定的加载过程中,静态组件。

资源下载
下载价格免费
解压密码:www.icz.com 使用版权:资源收集于网络,版权归原创者所有
运行环境:Windows
所需软件:Word
资源类型:简历
原文链接:https://www.icz.com/technicalinformation/web/vue3/2023/05/8653.html,转载请注明出处~~~
0

评论0

请先
注意:请收藏好网址www.icz.com,防止失联!站内免费资源持续上传中…!赞助我们
显示验证码
没有账号?注册  忘记密码?