Suspense

在Vue3中生命周期函数调用一步请求,组件的外部必须使用Suspense标签进行嵌套以等待异步方式的结束,可以进行页面加载展示。同事可以进行错误信息的页面处理

sus.vue
<template>
    <div id="app">
        <div v-if="error">{{error}}</div>
        <Suspense v-else>
            <template #default>
                <user/>
            </template>
           <template #fallback>
               Loading.....
            </template>
        </Suspense>
    </div>
</template>
<script>
import User from "./User"
import {ref,onErrorCaptured} from "vue"
export default {
    components:{
        'user':User
    },
    setup(){
        const error = ref(null)
        onErrorCaptured(e=>{
            error.value = e
            return true
        })
        return {error}
    }
}
</script>

user.vue

<template>
  <div>
    <h1>{{ user.name }}</h1>
    <h1>{{ user.age }}</h1>
  </div>
</template>

<script>
export default {
  async setup() {
    const fetchUser = () => {
      return new Promise((resolve, reject) => {
        setTimeout(() => {
           resolve({ name: "Carlo", age: "20" });
         // reject("获取信息失败!");
        }, 3000);
      });
    };
    
    const user = await fetchUser();
    return { user };
  },
}
</script>

页面会先展现Loading ,3s之后会展示user.vue
如果把 resolve({ name: "Carlo", age: "20" }); 注释,reject("获取信息失败!");放开,则会展示错误信息

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前几天看了一篇讲react suspense的文章,挺有趣的;所以翻了一下 vue 相关的实现,结果 Vue2 并...
    anOnion阅读 2,560评论 0 2
  • 在vue3中新加了一个组件叫 ,其作用是当你在进行一个异步加载时,可以先提供一些静态组件作为显示内容,然后当异步...
    Ying0223阅读 2,658评论 0 0
  • > 本文重点:介绍React重构的起因和目的,理解Fiber tree单向链表结构中各属性含义,梳理调度过程和核心...
    intopiece_槟阅读 1,533评论 0 0
  • VUE.js 基本命令v-if || v-for : 条件与循环v-model: 为页面输入框进行数据双向绑定v-...
    楼水流云阅读 757评论 0 0
  • 本文介绍与 Suspense 在三种情景下使用方法,并结合源码进行相应解析。欢迎关注个人博客。 Code Spli...
    牧云云阅读 4,616评论 0 6

友情链接更多精彩内容