正常情况下,setup不能是一个async函数,因为返回值不再是return的对象,而是promise,模板看不到对象中的属性。
但是,借助组件异步引入与Suspense结合,可以实现setup返回一个Promise实例
异步引入组件:
import { defineAsyncComponent } from 'vue'
const Child = defineAsyncComponent(() => import(`./Child`))
Suspense使用:
v-slot:default>
加载中,请稍等...
async setup(){
let sum = ref(0)
let p = new Promise((resolve,reject) => {
setTimeout(() => {
resolve({ sum })
}, 3000)
}
return await p
}
setup语法糖写法:
若有错误,欢迎评论或私信指出~
共同学习,共同进步!