【问题标题】:Vue composition API use VueAxios?Vue 组合 API 使用 VueAxios?
【发布时间】:2021-03-08 22:09:01
【问题描述】:

我在 main.js 导入 vue-axios

main.js

import { createApp } from 'vue';
import axios from 'axios';
import VueAxios from 'vue-axios';
import App from './App.vue';

const app = createApp(App);

app.use(VueAxios, axios);
app.mount('#app');

和 App.vue

export default {
  name: 'App',
  setup() {
   axios.get('xxxx').then((res) => {console.log(res)}); // is not working
  }
};

但是好像 Vue 组合 API 设置无法获取 axios?所以一定要在App.vue中使用import axios from 'axios'

import axios from 'axios';
 
export default {
  name: 'App',
  setup() {
   axios.get('xxxx').then((res) => {console.log(res)});
  }
};

我的环境是vite

【问题讨论】:

    标签: javascript vue.js axios vue-component vuejs3


    【解决方案1】:

    通常我会做这样的事情(除了我将所有 api 调用模块化为“服务”而不是将其内联到视图代码中。)

    import axios from 'axios';
    import {onMounted} from 'vue'
     
    export default {
      name: 'App',
      setup() {
    
       onMounted(async () => {
         let res = await axios.get('xxxx')
         console.log(res)
       });
      }
    };
    

    【讨论】:

      【解决方案2】:

      如果没有导入,这在任何版本的 Vue 中都不起作用:

      axios.get(...)
      

      即使在 Vue 2 中,如果您使用 vue-axios,您也必须使用其中之一:

      this.axios.get(...)
      this.$http.get(...)
      Vue.axios.get(...)
      

      组合 API 在组件中没有 this 访问权限,因此 vue-axios 没有多大帮助。

      【讨论】:

      • thx,不过我用的是composition API,好像那个页面必须要用import。
      • 是的,这就是我解释的重点。没有导入就行不通
      • 但是还有其他方法可以通过 Vue 3 中的根组件进行访问:stackoverflow.com/questions/60202724/…
      • 哦!也许使用提供/注入是个好主意!非常感谢!!
      猜你喜欢
      • 2021-02-08
      • 1970-01-01
      • 2021-01-10
      • 1970-01-01
      • 2023-04-02
      • 2022-08-03
      • 2022-11-05
      • 1970-01-01
      • 2022-07-19
      相关资源
      最近更新 更多