异步安装的钩子正在等待Feathers-Vuex的使用

时间:2020-08-28 18:37:31

标签: javascript vue.js vuex feathers-vuex

我在获取books.value中的数组以登录到控制台时遇到了一些麻烦。即使等待useFind函数之后,它仍然不会返回任何结果。我已经确认存在传递给查询的值的结果。如果在不刷新浏览器的情况下更改了代码,则console.log将起作用。我在做什么错了?

  import { useFind } from "feathers-vuex";

  async mounted() {
    const { Book } = this.$FeathersVuex.api;
    const pathBody = this.$route.path.split("/")[1];

    const bookParams = computed(() => {
      return {
        query: {
          referral_link: pathBody
        }
      };
    });

    const { items: books } = await useFind({
      model: Book,
      params: bookParams
    });

    console.log(books.value); // empty array
  }

1 个答案:

答案 0 :(得分:0)

要使用 useFind,您需要使用 vue 可组合 api 而不是普通的函数/选项。

它应该是这样的:

export default {
  component: 'PageName',
  setup(_ , { root }) {
    const { Book } = root.$FeathersVuex.api;
    const pathBody = root.$route.path.split("/")[1];

    const bookParams = computed(() => {
      return {
        query: {
          referral_link: pathBody
        }
      };
    });

    const { items: books } = await useFind({
      model: Book,
      params: bookParams
    });

    return {
      books
    }
  }
}

此外,mounted 上的数据也不会存在,因为实际获取需要时间。除了返回的 isPending 之外,您还可以添加 items。然后使用 v-if 在您的模板上使用它。