@ vue -композиция / Как я могу использовать асинхронные методы в setup () - PullRequest
2 голосов
/ 14 февраля 2020
<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» должна возвращать «Object» или «Function», получив «Promise»

1 Ответ

1 голос
/ 17 февраля 2020

Функция setup должна быть синхронной.

Хук onMounted может использоваться с обратным вызовом 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 в вашем шаблоне.

...