<Suspense>
<template #fallback>
<img :src="loadingJPG" class="w-[80px] h-[80px] object-cover rounded mt-1" alt=""/>
</template>
<template #default>
<AsyncComponent/>
</template>
</Suspense>
<script lang="ts" setup>
import AsyncComponent from "@/components/async.vue"
import loadingJPG from "@/assets/g.jpg";
</script>
来到组件中,因为setup在以前的created之前所以这个时候dom元素还没有渲染,所以这时候你需要东西占位
所以Suspense这个提案就有了!多说一句,如果你不需要在顶层使用await和async 就不必要使用Suspense
这是子组件
<template>
<div>
<div>{{ result.age }}</div>
<div>{{ result.name }}</div>
</div>
</template>
<script lang="ts" setup>
import {subMitForm} from "@/type/types";
async function queue() {
return new Promise((resolve) => {
setTimeout(() => {
resolve({name: "gq", age: 25,})
}, 2000);
});
}
let result: subMitForm = reactive({
name: "",
age: "",
});
let {name, age} = await <any>queue();
result.name = name;
result.age = age;
</script>