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 相关文章推荐
通过隐藏option实现select的联动效果
Nov 10 Javascript
jquery 经典动画菜单效果代码
Jan 26 Javascript
jquery常用技巧及常用方法列表集合
Apr 06 Javascript
JavaScript字符串String和Array操作的有趣方法
Dec 18 Javascript
jquery中的on方法使用介绍
Dec 29 Javascript
Node.js中使用计时器定时执行函数详解
Aug 15 Javascript
JQuery实现级联下拉框效果实例讲解
Sep 17 Javascript
论JavaScript模块化编程
Mar 07 Javascript
vue实现点击展开点击收起效果
Apr 27 Javascript
基于layui轮播图满屏是高度自适应的解决方法
Sep 16 Javascript
vue 父组件通过v-model接收子组件的值的代码
Oct 27 Javascript
在vue中使用防抖函数组件操作
Jul 26 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代码技巧的小结
2013/06/02 PHP
php输出xml必须header的解决方法
2014/10/17 PHP
php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
2014/12/15 PHP
详解WordPress开发中get_header()获取头部函数的用法
2016/01/08 PHP
Yii CDBCriteria常用方法实例小结
2017/01/19 PHP
怎么让脚本或里面的函数在所有图片都载入完毕的时候执行
2006/10/17 Javascript
js prototype 格式化数字 By shawl.qiu
2007/04/02 Javascript
仿微博字符限制效果实现代码
2012/04/20 Javascript
在javascript中实现函数数组的方法
2013/12/25 Javascript
如何解决谷歌浏览器下jquery无法获取图片的尺寸
2015/09/10 Javascript
基于jquery实现鼠标滚轮驱动的图片切换效果
2015/10/26 Javascript
理解js对象继承的N种模式
2016/01/25 Javascript
JavaScript中的splice方法用法详解
2016/07/20 Javascript
JS简单实现仿百度控制台输出信息效果
2016/09/04 Javascript
详解Node.js实现301、302重定向服务
2017/04/07 Javascript
vue中页面跳转拦截器的实现方法
2017/08/23 Javascript
vue实现点击展开点击收起效果
2018/04/27 Javascript
解决vue无法设置滚动位置的问题
2018/10/07 Javascript
nodejs中实现用户注册路由功能
2019/05/20 NodeJs
Vue中使用matomo进行访问流量统计的实现
2019/11/05 Javascript
[01:16:37]【全国守擂赛】第三周决赛 Dark Knight vs. 一个弱队
2020/05/04 DOTA
[01:06:43]完美世界DOTA2联赛PWL S3 PXG vs GXR 第二场 12.19
2020/12/24 DOTA
Python中的装饰器用法详解
2015/01/14 Python
Numpy掩码式数组详解
2018/04/17 Python
python实现逆序输出一个数字的示例讲解
2018/06/25 Python
画pytorch模型图,以及参数计算的方法
2019/08/17 Python
Charlotte Tilbury英国官网:英国彩妆品牌
2017/05/26 全球购物
请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1
2015/07/16 面试题
学生会干部自荐信
2014/02/04 职场文书
补充协议书范本
2014/04/23 职场文书
高三英语教学计划
2015/01/23 职场文书
仓库管理员岗位职责
2015/02/03 职场文书
2016领导干部廉洁从政心得体会
2016/01/19 职场文书
2016年教师学习廉政准则心得体会
2016/01/20 职场文书
vue-treeselect的基本用法以及解决点击无法出现拉下菜单
2022/04/30 Vue.js
小喇叭开始广播了! 四十多年前珍贵老照片
2022/05/09 无线电