Vue+Typescript中在Vue上挂载axios使用时报错问题
前端  /  管理员 发布于 4年前   442
在vue
项目开发过程中,为了方便在各个组件中调用axios
,我们通常会在入口文件将axios挂载到vue原型身上,如下:main.ts
import Vue from 'vue'import axios from './utils/http'Vue.prototype.$axios = axios;
这样的话,我们在各个组件中进行请求时,就可以直接使用this.$axios
,但是在ts中使用this.$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 axiosnpm i vue-axios -S# 注册Vue.use(axios,vue-axios)# 使用this.axios()
通过使用vue-axios
包,我们可以直接使用this.axios
进行调用。
从上面我们可以看出vue-axios
帮助我们实现了在Vue
原型身上挂载axios
,而且能够被ts检测到。这样就完美避免了ts报错的问题。
说明
使用ts进行开发的过程中,会遇到各种各样的报错问题,希望记录下来,避免下次再次踩坑,也希望帮助其他人。
总结
以上所述是小编给大家介绍的Vue+Typescript中在Vue上挂载axios使用时报错,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号