vue踩坑之全域性使用axios

2021-08-11 18:07:49 字數 1671 閱讀 6618

前言:

vue 原本有乙個官方推薦的 ajax 外掛程式 vue-resource,但是自從 vue 更新到 2.0 之後,尤雨溪宣布停止更新vue-resource,並推薦大家使用axios之後,越來越多的 vue 專案,都選擇 axios 來完成 ajax 請求,而大型專案會使用 vuex 來管理資料

之前一直使用的是 vue-resource外掛程式,在主入口檔案引入import vueresource from 'vue-resource'之後,直接使用vue.use(vueresource)之後即可將該外掛程式全域性引用了;

初用axios時,無腦的按照上面的步驟進行全域性引用,結果當時是慘慘的。

看了看文件,axios 是乙個基於 promise 的 http 庫

axios並沒有install 方法,所以是不能使用vue.use()方法的。

那麼難道每個檔案都要來引用一次?解決方法有很多種:

1.結合 vue-axios使用

2. axios 改寫為 vue 的原型屬性

3.結合 vuex的action

看了vue-axios的原始碼,它是按照vue外掛程式的方式去寫的。那麼結合vue-axios,就可以去使用vue.use方法了

首先在主入口檔案main.js中引用

import axios from

'axios'

import vueaxios from

'vue-axios'

vue.use(vueaxios,axios);

之後就可以使用了,在元件檔案中的methods裡去使用了

getnewslist()).catch

((response)=>)

},

首先在主入口檔案main.js中引用,之後掛在vue的原型鏈上

import axios from

'axios'

vue.prototype.$ajax= axios

在元件中使用

this.$ajax.get('api/getnewslist').then

((response)=>).catch

((response)=>)

結合 vuex的action

在vuex的倉庫檔案store.js中引用,使用action新增方法

import vue from

'vue'

import vuex from

'vuex'

import axios from

'axios'

vue.use(vuex)

const store = new vuex.store(

},actions: )

}}})

export default store

在元件中傳送請求的時候,需要使用 this.$store.dispatch

methods: 

}

vue踩坑之全域性使用axios

之前一直使用的是 vue resource外掛程式,在主入口檔案引入import vueresource from vue resource 之後,直接使用vue.use vueresource 之後即可將該外掛程式全域性引用了 初用axios時,無腦的按照上面的步驟進行全域性引用,結果當時是慘慘的...

axios使用踩坑

1 params和data 1 params params一般用於和url拼接,用於get請求,比如 axios.get user?id 12345 就等價於 axios.get user 2 data data請求是新增在請求體裡的,也就是body中,用於post請求。2 請求頭相關 1 post...

vue全域性使用axios的方法

在vue專案開發中,我們使用axios進行ajax請求,很多人一開始使用axios的方式,會當成vue resoure的使用方式來用,即在主入口檔案引入import vueresource from vue resource 之後,直接使用vue.use vueresource 之後即可將該外掛程式...