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脚本调试方法小结
Nov 24 Javascript
javascript笔记 String类replace函数的一些事
Sep 22 Javascript
用于deeplink的js方法(判断手机是否安装app)
Apr 02 Javascript
javascript 自定义回调函数示例代码
Sep 26 Javascript
Node.js 去掉种子(torrent)文件里的邪恶信息
Mar 27 Javascript
jQuery选择器及jquery案例详解(必看)
May 20 Javascript
基于IView中on-change属性的使用详解
Mar 15 Javascript
微信小程序当前时间时段选择器插件使用方法详解
Dec 28 Javascript
关于vue3.0中的this.$router.replace({ path: '/'})刷新无效果问题
Jan 16 Javascript
JavaScript 接口原理与用法实例详解
May 12 Javascript
VUE 单页面使用 echart 窗口变化时的用法
Jul 30 Javascript
js Proxy的原理详解
May 25 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
PHPMailer安装方法及简单实例
2008/11/25 PHP
深入理解PHP原理之Session Gc的一个小概率Notice
2011/04/12 PHP
php中使用临时表查询数据的一个例子
2013/02/03 PHP
PHP获取网页标题的3种实现方法代码实例
2014/04/11 PHP
PHP测试成功的邮件发送案例
2015/10/26 PHP
PHP上传文件参考配置大文件上传
2015/12/16 PHP
yii2局部关闭(开启)csrf的验证的实例代码
2017/07/10 PHP
Yii 框架入口脚本示例分析
2020/05/19 PHP
jquery的相对父元素和相对文档定位示例代码
2013/08/02 Javascript
将json当数据库一样操作的javascript lib
2013/10/28 Javascript
jqueyr判断checkbox组的选中(示例代码)
2013/11/08 Javascript
用JavaScript实现PHP的urlencode与urldecode函数
2015/08/13 Javascript
使用ajaxfileupload.js实现上传文件功能
2016/08/13 Javascript
node.js中module.exports与exports用法上的区别
2016/09/02 Javascript
javascript this详细介绍
2016/09/19 Javascript
Javascript中this绑定的3种方法与比较
2016/10/13 Javascript
JS简单添加元素新节点的方法示例
2018/02/10 Javascript
JQuery属性操作与循环用法示例
2019/05/15 jQuery
[01:03:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第一场 1月29日
2021/03/11 DOTA
Django中对通过测试的用户进行限制访问的方法
2015/07/23 Python
浅谈python对象数据的读写权限
2016/09/12 Python
python执行使用shell命令方法分享
2017/11/08 Python
几种实用的pythonic语法实例代码
2018/02/24 Python
Python实现连接MySql数据库及增删改查操作详解
2019/04/16 Python
selenium+python实现自动登陆QQ邮箱并发送邮件功能
2019/12/13 Python
解决Python图形界面中设置尺寸的问题
2020/03/05 Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
2020/05/16 Python
Pandas数据分析的一些常用小技巧
2021/02/07 Python
前端使用canvas生成盲水印的加密解密的实现
2020/12/16 HTML / CSS
美国班级戒指、帽子和礼服、毕业产品、年鉴:Balfour
2018/11/01 全球购物
Liu Jo西班牙官网:意大利服装品牌
2019/09/11 全球购物
大学班级文化建设方案
2014/05/06 职场文书
新教师培训心得体会
2014/09/02 职场文书
党员应该树立反腐倡廉的坚定意识思想汇报
2014/09/12 职场文书
教师群众路线教育实践活动学习笔记
2014/11/05 职场文书
餐厅保洁员岗位职责
2015/04/10 职场文书