Vue+Typescript中在Vue上挂载axios使用时报错问题


Posted in Javascript onAugust 07, 2019

vue项目开发过程中,为了方便在各个组件中调用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。通过
在网上查阅发现:在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+Typescript中在Vue上挂载axios使用时报错问题

从上面我们可以看出vue-axios帮助我们实现了在Vue原型身上挂载axios,而且能够被ts检测到。这样就完美避免了ts报错的问题。

说明

使用ts进行开发的过程中,会遇到各种各样的报错问题,希望记录下来,避免下次再次踩坑,也希望帮助其他人。

总结

以上所述是小编给大家介绍的Vue+Typescript中在Vue上挂载axios使用时报错,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
Javascript实例教程(19) 使用HoTMetal(6)
Dec 23 Javascript
禁用页面部分JavaScript方法的具体实现
Jul 31 Javascript
js与C#进行时间戳转换
Nov 14 Javascript
JS+CSS实现的拖动分页效果实例
May 11 Javascript
JS实现完全语义化的网页选项卡效果代码
Sep 15 Javascript
AngularJS入门教程之 XMLHttpRequest实例讲解
Jul 27 Javascript
vue开发心得和技巧分享
Oct 27 Javascript
关于vue-router的beforeEach无限循环的问题解决
Sep 09 Javascript
详解vue-cli快速构建vue应用并实现webpack打包
Dec 13 Javascript
深入浅析Vue中mixin和extend的区别和使用场景
Aug 01 Javascript
vue列表数据发生变化指令没有更新问题及解决方法
Jan 16 Javascript
jQuery实现简单聊天室
Feb 08 jQuery
更优雅的微信小程序骨架屏实现详解
Aug 07 #Javascript
vue 集成jTopo 处理方法
Aug 07 #Javascript
vue 集成 vis-network 实现网络拓扑图的方法
Aug 07 #Javascript
弱类型语言javascript开发中的一些坑实例小结【变量、函数、数组、对象、作用域等】
Aug 07 #Javascript
JS中getElementsByClassName与classList兼容性问题解决方案分析
Aug 07 #Javascript
javascript for循环性能测试示例
Aug 07 #Javascript
弱类型语言javascript中 a,b 的运算实例小结
Aug 07 #Javascript
You might like
php递归json类实例
2014/12/02 PHP
PHP中使用BigMap实例
2015/03/30 PHP
PHP伪造来源HTTP_REFERER的方法实例详解
2015/07/06 PHP
php四种定界符详解
2017/02/16 PHP
js实现按钮加背景图片常用方法
2014/11/01 Javascript
七夕情人节丘比特射箭小游戏
2015/08/20 Javascript
浅谈Sticky组件的改进实现
2016/03/22 Javascript
Angular 根据 service 的状态更新 directive
2016/04/03 Javascript
indexedDB bootstrap angularjs之 MVC DOMO (应用示例)
2016/06/20 Javascript
利用javascript实现的三种图片放大镜效果实例(附源码)
2017/01/23 Javascript
自定义PC微信扫码登录样式写法
2017/12/12 Javascript
浅谈让你的代码更简短,更整洁,更易读的ES6小技巧
2018/10/25 Javascript
element-ui 时间选择器限制范围的实现(随动)
2019/01/09 Javascript
vue实现在线预览pdf文件和下载(pdf.js)
2019/11/26 Javascript
微信小程序使用自定义组件导航实现当前页面高亮
2020/01/02 Javascript
JavaScript的垃圾回收机制与内存管理
2020/08/06 Javascript
sublime text 3配置使用python操作方法
2017/06/11 Python
Python 中的range(),以及列表切片方法
2018/07/02 Python
浅述python2与python3的简单区别
2018/09/19 Python
详解python执行shell脚本创建用户及相关操作
2019/04/11 Python
selenium WebDriverWait类等待机制的实现
2020/03/18 Python
Python virtualenv虚拟环境实现过程解析
2020/04/18 Python
Django之腾讯云短信的实现
2020/06/12 Python
CSS3教程(9):设置RGB颜色
2009/04/02 HTML / CSS
基础的CSS3弹性盒Flexbox布局使用实例
2016/04/08 HTML / CSS
基于IE10/HTML5 开发
2013/04/22 HTML / CSS
亚洲最大旅游体验平台:KKday
2017/10/21 全球购物
美国廉价机票预订网站:Cheapfaremart
2018/04/28 全球购物
大课间体育活动方案
2014/03/12 职场文书
精彩的演讲稿开头
2014/05/08 职场文书
2014年计生标语
2014/06/23 职场文书
幼儿园见习报告范文
2014/10/30 职场文书
家属答谢词
2015/01/05 职场文书
2015年幼儿园中班下学期工作总结
2015/05/22 职场文书
催款律师函范文
2015/05/27 职场文书
Nginx + consul + upsync 完成动态负载均衡的方法详解
2021/03/31 Servers