如何使用 vuejs / composition-api 使用 $http?

How to use the $http using vuejs / composition-api?

我正在尝试使用组合 api 重构一些组件。有个函数需要发送请求

因为在 setup(props, context) 上无法访问 this 我想我可以使用这个 context 参数就像我在 emitting 时一样parent (context.emit()) 的事件,但事实并非如此。

使用context时出错:

Error in v-on handler: "TypeError: context.http is undefined""

使用this时出错:

Error in v-on handler: "TypeError: _this is undefined"

这是我正在努力实现的目标的片段:

context.http.post('/url'), { data })
  .then(({ data }) => {
    console.log(data)
  });

您可以使用 vue-resource 如下,context.parentthis 关键字。 Here 是 codesandbox link

main.js

import Vue from "vue";
import App from "./App.vue";
import VueCompositionApi from "@vue/composition-api";
import VueResource from "vue-resource";

Vue.use(VueCompositionApi);
Vue.use(VueResource);

Vue.config.productionTip = false;

new Vue({
  render: h => h(App)
}).$mount("#app");

YourComponent.vue

<template>
  <div id="app"></div>
</template>

<script>
import { onMounted } from "@vue/composition-api";
export default {
  setup(props, context) {
    onMounted(async () => {
      await context.parent.$http
        .get("https://jsonplaceholder.typicode.com/todos/")
        .then(response => console.log(response.data));
    });
  }
};
</script>