Vue+Typescript中在Vue上掛載axios使用時報錯怎么辦

這篇文章將為大家詳細講解有關(guān)Vue+Typescript中在Vue上掛載axios使用時報錯怎么辦,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

成都創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)公司是一家服務(wù)多年做網(wǎng)站建設(shè)策劃設(shè)計制作的公司,為廣大用戶提供了網(wǎng)站建設(shè)、成都做網(wǎng)站,成都網(wǎng)站設(shè)計,廣告投放,成都做網(wǎng)站選成都創(chuàng)新互聯(lián)公司,貼合企業(yè)需求,高性價比,滿足客戶不同層次的需求一站式服務(wù)歡迎致電。

vue項目開發(fā)過程中,為了方便在各個組件中調(diào)用axios,我們通常會在入口文件將axios掛載到vue原型身上,如下:
main.ts

import Vue from 'vue'
import axios from './utils/http'
Vue.prototype.$axios = axios;

這樣的話,我們在各個組件中進行請求時,就可以直接使用this.$axios,但是在ts中使用this.$axios進行請求時,會進行報錯,如下所示:

Vue+Typescript中在Vue上掛載axios使用時報錯怎么辦

從圖中我們可以看出ts在Vue身上檢測不到$axios。通過
在網(wǎng)上查閱發(fā)現(xiàn):在ts中,不識別vue下面掛$axios,不可以掛在原型鏈上。也就是說我們手動在Vue原型身上掛載$axios,ts無法識別到。

解決方法1:手動告訴ts忽略這里的類型檢測

雖然ts無法檢測到Vue原型身上的prototype,但是實際上我們是掛載成功的,也就是說我們是可以正常使用的,唯一需要解決的是ts的類型檢測問題,因此,我們可以指定this為any類型,這樣的話就可以避免報錯問題。如下所示:

(this as any).$axios
  .post("/api/users/login", this.ruleForm)
  .then((res: {data:any}) => {}

但是使用any意味著失去了類型安全保障,并且你得不到工具的支持。

解決方法2:使用vue-axios這個包來處理這個掛載問題

我們可以通過使用vue-axios這個包來處理這個掛載問題。vue-axios 是在axios基礎(chǔ)上擴展的插件,在Vue.prototype原型上擴展了$http等屬性,可以更加方便的使用axios。

# 安裝
npmi axios
npm i vue-axios -S
# 注冊
Vue.use(axios,vue-axios)
# 使用
this.axios()

通過使用vue-axios包,我們可以直接使用this.axios進行調(diào)用。

Vue+Typescript中在Vue上掛載axios使用時報錯怎么辦

從上面我們可以看出vue-axios幫助我們實現(xiàn)了在Vue原型身上掛載axios,而且能夠被ts檢測到。這樣就完美避免了ts報錯的問題。

關(guān)于“Vue+Typescript中在Vue上掛載axios使用時報錯怎么辦”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

標題名稱:Vue+Typescript中在Vue上掛載axios使用時報錯怎么辦
新聞來源:http://www.muchs.cn/article10/phdddo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、ChatGPT、企業(yè)建站、、定制網(wǎng)站全網(wǎng)營銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)