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 相关文章推荐
学习jquery必备 api中英文对照的chm手册 下载
May 03 Javascript
javascript一点特殊用法
May 28 Javascript
javascript五图轮播切换实用版
Aug 17 Javascript
jquery插件开发之实现jquery手风琴功能分享
Mar 10 Javascript
jQuery模仿阿里云购买服务器选择购买时间长度的代码
Apr 29 Javascript
AngularJS $injector 依赖注入详解
Sep 14 Javascript
jQuery ajax实现省市县三级联动
Mar 07 Javascript
vue.js的安装方法
May 12 Javascript
echarts同一页面中四个图表切换的js数据交互方法示例
Jul 03 Javascript
对angularJs中controller控制器scope父子集作用域的实例讲解
Oct 08 Javascript
解决VUEX的mapState/...mapState等取值问题
Jul 24 Javascript
vue实现拖拽进度条
Mar 01 Vue.js
更优雅的微信小程序骨架屏实现详解
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序列号生成函数和字符串替换函数代码
2012/06/07 PHP
解析WordPress中函数钩子hook的作用及基本用法
2015/12/22 PHP
php简单截取字符串代码示例
2016/10/19 PHP
详解php实现页面静态化原理
2017/06/21 PHP
基于jquery的$.ajax async使用
2011/10/19 Javascript
IE6浏览器下resize事件被执行了多次解决方法
2012/12/11 Javascript
javascript设计模式之工厂模式示例讲解
2014/03/04 Javascript
jquery append()方法与html()方法的区别及使用介绍
2014/08/01 Javascript
jquery对象和javascript对象即DOM对象相互转换
2014/08/07 Javascript
JavaScript中的变量定义与储存介绍
2014/12/31 Javascript
基于Jquery实现万圣节快乐特效
2015/11/01 Javascript
日常收藏的jquery技巧
2015/12/02 Javascript
JavaScript是如何实现继承的(六种方式)
2016/03/31 Javascript
Bootstrap CSS组件之按钮组(btn-group)
2016/12/17 Javascript
Vue数据驱动模拟实现5
2017/01/13 Javascript
Vue.js学习示例分享
2017/02/05 Javascript
Nodejs处理异常操作示例
2018/12/25 NodeJs
vue+iview 兼容IE11浏览器的实现方法
2019/01/07 Javascript
jQuery实现可以计算进制转换的计算器
2020/10/19 jQuery
超详细小程序定位地图模块全系列开发教学
2020/11/24 Javascript
python使用PyV8执行javascript代码示例分享
2013/12/04 Python
python中精确输出JSON浮点数的方法
2014/04/18 Python
python循环监控远程端口的方法
2015/03/14 Python
Sanic框架路由用法实例分析
2018/07/16 Python
Python将一个Excel拆分为多个Excel
2018/11/07 Python
python爬取本站电子书信息并入库的实现代码
2020/01/20 Python
通过python连接Linux命令行代码实例
2020/02/18 Python
appium+python自动化配置(adk、jdk、node.js)
2020/11/17 Python
详解CSS3中Media Queries的相关使用
2015/07/17 HTML / CSS
Bluebella美国官网:英国性感内衣品牌
2018/10/04 全球购物
某个公司的Java笔面试题
2016/03/11 面试题
《黄山奇石》教学反思
2014/04/19 职场文书
小学生作文评语集锦
2014/12/25 职场文书
工资证明范本
2015/06/12 职场文书
Mybatis是这样防止sql注入的
2021/12/06 Java/Android
SQL中的连接查询详解
2022/06/21 SQL Server