【发布时间】:2021-01-14 22:01:39
【问题描述】:
(这个问题已经回答了 JavaScript,见下文,但这个问题是针对 TypeScript 的,它的行为不同)
我正在尝试使用打字稿在 Vue3.0 中使用异步功能。
没有 async,这段代码运行良好:
// file: components/HelloWorld.vue
<template>
<div class="hello">
<h1>{{ msg }}</h1>
</div>
</template>
<script lang="ts">
import {defineComponent} from 'vue'
export default defineComponent({
name: 'HelloWorld',
props: {
msg: String,
},
async setup() { // <-- this works without 'async'
const test = 'test'
// await doSomethingAsynchronous()
return {
test,
}
},
})
</script>
async setup() 组件“HelloWorld”从页面中消失,Firefox 控制台告诉我
"Uncaught (in promise) TypeError: node is null (runtime-dom.esm-bundler.js)"
当我将async setup() 更改为setup() 时,代码有效,
但随后我将无法在 setup 函数中使用 async/await。
所以我的问题: 如何使用 Typescript 在 setup() 函数中使用 async/await?
编辑:
这个问题的答案:why i got blank when use async setup() in Vue3 表明async setup() 确实适用于 JavaScript,所以我希望它也适用于 TypeScript。
【问题讨论】:
-
要使用
async setup(),你需要使用,你可以google并阅读它的工作原理。 -
谢谢,我会在我再次尝试
async setup()时进行调查。 -
关于
它只能应用于子组件,因此您不能在具有异步设置的同一组件中使用 ,这意味着 App.vue(顶级组件)必须是同步的,有点烦人,但它就是这样工作的。
标签: typescript vue.js async-await vuejs3 vue-composition-api