javascript - @vue-composition/如何在 setup() 中使用异步方法

标签 javascript typescript vue.js web vue-composition-api

<script lang="ts">
import { createComponent } from "@vue/composition-api";

import { SplashPage } from "../../lib/vue-viewmodels";

export default createComponent({
  async setup(props, context) {
    await SplashPage.init(2000, context.root.$router, "plan", "login");
  }
});
</script>

错误:“setup”必须返回“对象”或“函数”,得到“Promise”

最佳答案

setup 函数必须同步 can be async using Suspense .

如何避免使用异步设置(过时的答案)

onMounted Hook 可以与 async 回调一起使用:

import { onMounted } from "@vue/composition-api";

// …
export default createComponent({
  setup(props, context) {
    onMounted(async () => {
      await SplashPage.init(2000, context.root.$router, "plan", "login");
    )};
  }
});

或者,始终可以调用异步函数而不等待它:

SplashPage.init(2000, context.root.$router, "plan", "login")
  .catch(console.log);

在这两种情况下,您都必须考虑到组件将在异步函数执行之前呈现。不显示依赖于它的内容的一个简单方法是在模板中使用 v-if

关于javascript - @vue-composition/如何在 setup() 中使用异步方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60230249/

相关文章:

javascript - 如何更改输入卡号的格式?

javascript - AngularJS 的 $routeProvider templateUrl 总是使用 Express 返回 404

javascript - 我的 eval() 安全吗?

reactjs - react-redux 类型文件中的 TypeScript 错误

typescript - 关于 Vue 3 + TypeScript 和 Augmenting-Types-for-Use-with-Plugins 的问题

javascript - 单击按钮时显示弹出窗口

typescript - Webpack 4 加载库 Sourcemap

typescript - 如何使用 vscode 扩展 api 将命令放入子菜单

vue.js - 如何确定导致组件重新渲染的原因

使用 vue-router 登录后重定向到请求的页面