资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

Vue+Typescript中在Vue上挂载axios使用时报错怎么办

这篇文章将为大家详细讲解有关Vue+Typescript中在Vue上挂载axios使用时报错怎么办,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

成都创新互联公司网站建设公司是一家服务多年做网站建设策划设计制作的公司,为广大用户提供了网站建设、成都做网站,成都网站设计,广告投放,成都做网站选成都创新互联公司,贴合企业需求,高性价比,满足客户不同层次的需求一站式服务欢迎致电。

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报错的问题。

关于“Vue+Typescript中在Vue上挂载axios使用时报错怎么办”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。


网站标题:Vue+Typescript中在Vue上挂载axios使用时报错怎么办
分享URL:http://www.cdkjz.cn/article/phdddo.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220