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 多级checkbox选择效果
Aug 20 Javascript
JQuery制作的放大效果的popup对话框(未添加任何jquery plugin)分享
Apr 28 Javascript
Javascript对象属性方法汇总
Nov 21 Javascript
jQuery setTimeout传递字符串参数报错的解决方法
Jun 09 Javascript
JS提交form表单实例分析
Dec 10 Javascript
jQuery控制div实现随滚动条滚动效果
Jun 07 Javascript
微信小程序开发经验总结(推荐)
Jan 11 Javascript
详解vue2.0 使用动态组件实现 Tab 标签页切换效果(vue-cli)
Aug 30 Javascript
vue使用$emit时,父组件无法监听到子组件的事件实例
Feb 26 Javascript
浅谈webpack组织模块的原理
Mar 10 Javascript
基于vue2.0实现仿百度前端分页效果附实现代码
Oct 30 Javascript
使用TS来编写express服务器的方法步骤
Oct 29 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
DC宇宙的第一个英雄,堪称动漫史鼻祖,如今成为美国文化的象征
2020/04/09 欧美动漫
由php的call_user_func传reference引发的思考
2010/07/23 PHP
浅谈discuz密码加密的方式
2014/05/22 PHP
PHP中数组的分组排序实例
2014/06/01 PHP
destoon数据库表说明汇总
2014/07/15 PHP
php目录拷贝实现方法
2015/07/10 PHP
php数据库的增删改查 php与javascript之间的交互
2017/08/31 PHP
如何在标题栏显示框架内页面的标题
2007/02/03 Javascript
Ext grid 添加右击菜单
2009/11/26 Javascript
chrome浏览器不支持onmouseleave事件的解决技巧
2013/05/31 Javascript
jQuery 跨域访问解决原理案例详解
2016/07/09 Javascript
浅析BootStrap Treeview的简单使用
2016/10/12 Javascript
jQuery通过ajax快速批量提交表单数据
2016/10/25 Javascript
详解Angular Reactive Form 表单验证
2017/07/06 Javascript
JavaScript 判断浏览器是否是IE
2021/02/19 Javascript
python原始套接字编程示例分享
2014/02/21 Python
python判断一个集合是否为另一个集合的子集方法
2018/05/04 Python
在django模板中实现超链接配置
2019/08/21 Python
Python如何实现动态数组
2019/11/02 Python
pygame库实现移动底座弹球小游戏
2020/04/14 Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
2019/12/10 Python
python实现逆滤波与维纳滤波示例
2020/02/26 Python
自定义Django默认的sitemap站点地图样式
2020/03/04 Python
基于python 取余问题(%)详解
2020/06/03 Python
Python‘==‘ 及 ‘is‘相关原理解析
2020/09/05 Python
Python内存泄漏和内存溢出的解决方案
2020/09/26 Python
css3实现背景动态渐变效果
2019/12/10 HTML / CSS
美国指甲油品牌:Deco Miami
2017/01/30 全球购物
KEEN美国官网:美国人气户外休闲鞋品牌
2021/03/09 全球购物
爱情寄语大全
2014/04/09 职场文书
证券区域经理岗位职责
2015/04/10 职场文书
2016年春季运动会通讯稿
2015/11/25 职场文书
导游词之云南丽江古城
2019/09/17 职场文书
Python访问Redis的详细操作
2021/06/26 Python
类和原型的设计模式之复制与委托差异
2022/07/07 Javascript
clear 万能清除浮动(clearfix:after)
2023/05/21 HTML / CSS