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 相关文章推荐
页面版文本框智能提示JS代码
Nov 20 Javascript
由JavaScript技术实现的web小游戏(不含网游)
Jun 12 Javascript
javascript预览上传图片发现的问题的解决方法
Nov 25 Javascript
在Javascript里访问SharePoint列表数据的实现方法
May 22 Javascript
javascript将数组插入到另一个数组中的代码
Jan 10 Javascript
THREE.JS入门教程(2)着色器-上
Jan 24 Javascript
使用js 设置url参数
Jul 08 Javascript
jquery动态加载select下拉框示例代码
Dec 10 Javascript
html的DOM中document对象anchors集合用法实例
Jan 21 Javascript
JavaScript中用toString()方法返回时间为字符串
Jun 12 Javascript
详解使用Node.js 将txt文件转为Excel文件
Jul 05 Javascript
微信小程序chooseImage的用法(从本地相册选择图片或使用相机拍照)
Aug 22 Javascript
更优雅的微信小程序骨架屏实现详解
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之数据库操作详解及乱码解决!
2007/01/02 PHP
php输出表格的实现代码(修正版)
2010/12/29 PHP
php 把数字转换成汉字的代码
2015/07/21 PHP
PHP微信刮刮卡 附微信接口
2016/07/22 PHP
简单通用的JS滑动门代码
2008/12/19 Javascript
js获取location.href的参数实例代码
2013/08/02 Javascript
Android中的jQuery:AQuery简介
2014/05/06 Javascript
jquery解决客户端跨域访问问题
2015/01/06 Javascript
Node.js巧妙实现Web应用代码热更新
2015/10/22 Javascript
详解JavaScript中的构造器Constructor模式
2016/01/14 Javascript
AngularJS 单元测试(二)详解
2016/09/21 Javascript
浅谈js中几种实用的跨域方法原理详解
2016/12/02 Javascript
vue+axios新手实践实现登陆的示例代码
2018/06/06 Javascript
详解angularjs跨页面传参遇到的一些问题
2018/11/01 Javascript
小程序绑定用户方案优化小结
2019/05/15 Javascript
微信小程序的引导页实现代码
2020/06/24 Javascript
Vue filter 过滤器、以及在table中的使用介绍
2020/09/07 Javascript
js调用网络摄像头的方法
2020/12/05 Javascript
vue实现可移动的悬浮按钮
2021/03/04 Vue.js
书单|人生苦短,你还不用python!
2017/12/29 Python
Python 3.8中实现functools.cached_property功能
2019/05/29 Python
从numpy数组中取出满足条件的元素示例
2019/11/26 Python
浅析python表达式4+0.5值的数据类型
2020/02/26 Python
aws 通过boto3 python脚本打pach的实现方法
2020/05/10 Python
Python3 ID3决策树判断申请贷款是否成功的实现代码
2020/05/21 Python
DNA测试:Orig3n
2019/03/01 全球购物
Notino罗马尼亚网站:购买香水和化妆品
2019/07/20 全球购物
linux面试题参考答案(9)
2015/01/07 面试题
介绍下static、final、abstract区别
2015/01/30 面试题
大学生职业生涯规划书的基本内容
2014/01/06 职场文书
上班玩游戏检讨书
2014/02/07 职场文书
2014年房地产个人工作总结
2014/12/20 职场文书
个人廉政承诺书
2015/04/28 职场文书
经营目标责任书
2015/05/08 职场文书
七年级作文之秋游
2019/10/21 职场文书
Python中else的三种使用场景
2021/06/16 Python