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 相关文章推荐
IE JS编程需注意的内存释放问题
Jun 23 Javascript
跟着Jquery API学Jquery之一 选择器
Apr 07 Javascript
JavaScript 类型的包装对象(Typed Wrappers)
Oct 27 Javascript
jQuery实现图片放大预览实现原理及代码
Sep 12 Javascript
jQuery实现的漂亮表单效果代码
Aug 18 Javascript
jQuery1.9+中删除了live以后的替代方法
Jun 17 Javascript
扩展bootstrap的modal模态框-动态添加modal框-弹出多个modal框
Feb 21 Javascript
JS实现li标签的删除
Apr 12 Javascript
使用vue制作滑动标签
Sep 21 Javascript
javascript实现摄像头拍照预览
Sep 30 Javascript
微信小程序实现单个卡片左滑显示按钮并防止上下滑动干扰功能
Dec 06 Javascript
js回到页面指定位置的三种方式
Dec 17 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中mysql操作buffer用法详解
2015/03/19 PHP
在一个form用一个SUBMIT(或button)分别提交到两个处理表单页面的代码
2007/02/15 Javascript
学习YUI.Ext 第三天
2007/03/10 Javascript
javascript入门基础之私有变量
2010/02/23 Javascript
JS动态创建Table,Tr,Td并赋值的具体实现
2013/07/05 Javascript
JS实现侧悬浮浮动实例代码
2013/11/29 Javascript
浅析jquery某一元素重复绑定的问题
2014/01/03 Javascript
JavaScript获取路径设计源码
2014/05/22 Javascript
用js一次改变多个input的readonly属性值的方法
2014/06/11 Javascript
一个js过滤空格的小函数
2014/10/10 Javascript
jQuery实现默认是闭合的FAQ展开效果菜单
2015/09/14 Javascript
详解JavaScript中的构造器Constructor模式
2016/01/14 Javascript
实例讲解jquery中mouseleave和mouseout的区别
2016/02/17 Javascript
jQuery插件实现可输入和自动匹配的下拉框
2016/10/24 Javascript
利用vue.js插入dom节点的方法
2017/03/15 Javascript
vue使用keep-alive实现数据缓存不刷新
2017/10/21 Javascript
详解使用webpack构建多页面应用
2017/12/21 Javascript
vue slot 在子组件中显示父组件传递的模板
2018/03/02 Javascript
vue-auto-focus: 控制自动聚焦行为的 vue 指令方法
2018/08/25 Javascript
js实现前面自动补全位数的方法
2018/10/10 Javascript
利用Promise自定义一个GET请求的函数示例代码
2019/03/20 Javascript
node.js中npm包管理工具用法分析
2020/02/14 Javascript
JS pushlet XMLAdapter适配器用法案例解析
2020/10/16 Javascript
[原创]python爬虫(入门教程、视频教程)
2018/01/08 Python
详解Python自建logging模块
2018/01/29 Python
django admin组件使用方法详解
2019/07/19 Python
Python  Django 母版和继承解析
2019/08/09 Python
python 使用pdfminer3k 读取PDF文档的例子
2019/08/27 Python
keras:model.compile损失函数的用法
2020/07/01 Python
欧洲最大的美妆零售网站:Feelunique
2017/01/14 全球购物
施华洛世奇英国官网:SWAROVSKI英国
2017/03/13 全球购物
微软日本官方网站:Microsoft日本
2017/11/26 全球购物
教师实习自我鉴定
2013/12/11 职场文书
住宅质量保证书
2014/04/29 职场文书
五年级上册复习计划
2015/01/19 职场文书
python 逐步回归算法
2021/04/06 Python