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面向对象编程
Mar 04 Javascript
JQuery1.6 使用方法三
Nov 23 Javascript
jQuery Mobile页面跳转后未加载外部JS原因分析及解决
Mar 18 Javascript
JS实现带缓冲效果打开、关闭、移动一个层的方法
May 09 Javascript
javascript无刷新评论实现方法
May 13 Javascript
javascript中eval解析JSON字符串
Feb 27 Javascript
jQuery的ajax和遍历数组json实例代码
Aug 01 Javascript
关于JS Lodop打印插件打印Bootstrap样式错乱问题的解决方案
Dec 23 Javascript
微信小程序实现点击文字页面跳转功能【附源码下载】
Dec 12 Javascript
解决webpack无法通过IP地址访问localhost的问题
Feb 22 Javascript
深入理解Node内建模块和对象
Mar 12 Javascript
Vue列表如何实现滚动到指定位置样式改变效果
May 09 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
CentOS下PHP7的编译安装及MySQL的支持和一些常见问题的解决办法
2015/12/17 PHP
PHP实现的redis主从数据库状态检测功能示例
2017/07/20 PHP
合并table相同单元格的jquery插件分享(很精简)
2011/06/20 Javascript
用客户端js实现带省略号的分页
2013/04/27 Javascript
javascript去除字符串左右两端的空格
2015/02/05 Javascript
JavaScript中0和""比较引发的问题
2016/05/26 Javascript
js实现5秒倒计时重新发送短信功能
2017/02/05 Javascript
js实现横向拖拽导航条功能
2017/02/17 Javascript
javascript算法之二叉搜索树的示例代码
2017/09/12 Javascript
JS实现table表格固定表头且表头随横向滚动而滚动
2017/10/26 Javascript
详解小程序输入框闪烁及重影BUG解决方案
2018/08/31 Javascript
从0到1构建vueSSR项目之node以及vue-cli3的配置
2019/03/07 Javascript
浅谈Vue.js 关于页面加载完成后执行一个方法的问题
2019/04/01 Javascript
详解微信小程序之一键复制到剪切板
2019/04/24 Javascript
VUE页面中通过双击实现复制表格中内容的示例代码
2020/06/11 Javascript
JavaScript实现沿五角星形线摆动的小圆实例详解
2020/07/28 Javascript
Python运行的17个时新手常见错误小结
2012/08/07 Python
django模型中的字段和model名显示为中文小技巧分享
2014/11/18 Python
举例讲解Python中的算数运算符的用法
2015/05/13 Python
Python的爬虫包Beautiful Soup中用正则表达式来搜索
2016/01/20 Python
Python实现文件复制删除
2016/04/19 Python
Python3中正则模块re.compile、re.match及re.search函数用法详解
2018/06/11 Python
python实现从文件中读取数据并绘制成 x y 轴图形的方法
2018/10/14 Python
PyQt5的安装配置过程,将ui文件转为py文件后显示窗口的实例
2019/06/19 Python
python实现串口自动触发工作的示例
2019/07/02 Python
python2与python3爬虫中get与post对比解析
2019/09/18 Python
美国顶级品牌男士大码服装店:DXL
2017/08/30 全球购物
以设计师精品品质提供快速时尚:PopJulia
2018/01/09 全球购物
名人珠宝设计师:Melinda Maria Jewelry
2019/03/06 全球购物
Linux面试题LINUX系统类
2014/11/19 面试题
消防安全检查制度
2014/02/04 职场文书
企业安全生产演讲稿
2014/05/09 职场文书
聘用意向书
2014/07/29 职场文书
爱的承诺书
2015/01/20 职场文书
幼儿园六一儿童节主持词
2015/06/30 职场文书
gateway与spring-boot-starter-web冲突问题的解决
2021/07/16 Java/Android