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

来源:https://www.cnblogs.com/yinhaiying/archive/2019/08/07/11314332.html
-Advertisement-
Play Games

Vue+Typescript中在Vue上掛載axios使用時報錯 在 項目開發過程中,為了方便在各個組件中調用 ,我們通常會在入口文件將axios掛載到vue原型身上,如下: 這樣的話,我們在各個組件中進行請求時,就可以直接使用 ,但是在ts中使用 進行請求時,會進行報錯,如下所示: 從圖中我們可以 ...


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

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

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

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

_axios.png

從圖中我們可以看出ts在Vue身上檢測不到$axios。通過
在網上查閱發現:在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基礎上擴展的插件,在Vue.prototype原型上擴展了$http等屬性,可以更加方便的使用axios。

# 安裝
npmi axios
npm i vue-axios -S

# 註冊
Vue.use(axios,vue-axios)

# 使用
this.axios()

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

vue-axios.png

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

說明

使用ts進行開發的過程中,會遇到各種各樣的報錯問題,希望記錄下來,避免下次再次踩坑,也希望幫助其他人。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在cesium中,用戶滑鼠左鍵雙擊視圖或Entity時,實際觸發的是兩次click和一次dbclick事件,非常影響代碼設計,本文記錄瞭如何區分單擊【LEFT_CLICK】和雙擊事件【LEFT_DOUBLE_CLICK】的代碼及原理方法。 ...
  • 一、雙花括弧{{}}插值和MVVM模式 1.1 體會{{}}插值 index.wxml的標簽不是html的那些標簽,這裡的view就是div。 {{}}這樣的插值寫法,叫做mustache語法。mustache是鬍子的意思,因為{{}}像鬍子。 要在同名js文件下的data屬性中定義: 所有的框架: ...
  • 1.1、自動生成目錄 效果如下: (1)頁腳js代碼 首先得有js許可權 (2)頁面定製css代碼 1.2.增加返回頂部按鈕 (1)頁面定製css代碼 (2)頁首html代碼 1.3.愛心特效(滑鼠點擊頁面) 滑鼠點擊頁面效果: 把下麵代碼複製到公告欄裡面 1.4.公告欄時鐘 公告裡面 1.5.公告欄 ...
  • 轉自阮一峰http://www.ruanyifeng.com/home.html console.log(),console.info(),console.debug() console.log方法用於在控制台輸出信息。它可以接受一個或多個參數,將它們連接起來輸出。 console.log方法會自動 ...
  • 自定義導航欄。 效果如下: 1.1.自定義導航欄 我的博客皮膚用的是AnotherEon001,假如你的博客用的是其它皮膚,樣式需要自己修改,要想達到一樣的效果,建議也用同款皮膚 (1)把預設的導航欄給隱藏掉 既然我們想要自定義導航欄,預設的導航欄就不能顯示 (2)頁首html代碼 裡面一個ul包含 ...
  • 獲取時間: 獲取1997年10月1號日期 new Date: 當使用 - 拼接年月日時將會使用UTC時區解析參數,會比北京時間快八小時。 當時用 / 拼接年月日時會使用北京的時區去解析參數,取到的是北京時間。 Date.parse 獲取UTC時間:使用 - 拼接 獲取北京時間: 使用 / 拼接 ...
  • 1.禁止div點擊 //css屬性: pointer-events: none; //或者定義屬性,在js中添加: $(".原類名").addClass("新類名"); //js: //禁用 $.fn.disable = function () { $(this).addClass("disable ...
  • HTML代碼 <select id="s1"> <option value="0">~請選擇省份~</option> <option value="1">湖北省</option> <option value="2">江西省</option> </select> <select name="" id= ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...