资讯专栏INFORMATION COLUMN

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

AaronYuan / 527人阅读

摘要:也就是说我们手动在原型身上挂载无法识别到。这样就完美避免了报错的问题。说明使用进行开发的过程中,会遇到各种各样的报错问题,希望记录下来,避免下次再次踩坑,也希望帮助其他人。

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进行请求时,会进行报错,如下所示:

从图中我们可以看出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-axios帮助我们实现了在Vue原型身上挂载axios,而且能够被ts检测到。这样就完美避免了ts报错的问题。

说明

使用ts进行开发的过程中,会遇到各种各样的报错问题,希望记录下来,避免下次再次踩坑,也希望帮助其他人。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/106483.html

相关文章

  • 猫头鹰的深夜翻译:从1000+JS项目中汇总的10个最容易出现的误(以及如何解决)

    摘要:常出现的错误前十位为了可读性,错误名称进行了一定的简写。让我们深入了解每个错误发生的原因以及解决方法。这个问题很容易解决。当未捕获的错误跨越违法跨域策略的域边界时,会发生脚本错误。这是当你在中试图调用的方法时出现的错误。 JavaScript常出现的错误前十位 showImg(https://segmentfault.com/img/bV3Z1z?w=1116&h=691); 为了可读...

    eccozhou 评论0 收藏0
  • Vue + TypeScript + Element 项目实践(简洁时尚博客网站)及踩坑记

    摘要:前言本文讲解如何在项目中使用来搭建并开发项目,并在此过程中踩过的坑。具有类型系统,且是的超集,在年势头迅猛,可谓遍地开花。年将会更加普及,能够熟练掌握,并使用开发过项目,将更加成为前端开发者的优势。 showImg(https://segmentfault.com/img/remote/1460000018720573); 前言 本文讲解如何在 Vue 项目中使用 TypeScript...

    luckyyulin 评论0 收藏0
  • 使用Vueaxios自定义header时报处理~

    前端Axios的设置处理当 Content-Type 为 application/json 的时候,会先产生一个 OPTION 请求(如 Network所示)。 可以把 Content-Type 设置为 application/x-www-form-urlencoded。设置 Auth 请求头,参看官方文档 axios.defaults.baseURL = https://api.example....

    ysl_unh 评论0 收藏0
  • vue项目中使用element-ui下拉框选项值为对象时报

    摘要:在做后台管理时,使用了搭配,请求方法使用了插件,在使用下拉框时,因为我需要获取选中的选项中的其他值,因此需要传入对象。 在做后台管理时,使用了vue搭配elementUI,请求方法使用了axios插件,在使用下拉框时,因为我需要获取选中的选项中的其他值,因此需要传入对象。对select下拉框的文档没有读的很仔细,百度过几篇文章,也没有理解他们表达的意思,然后自己又去看文档,把他的属性看...

    Drummor 评论0 收藏0
  • 快速构建一个使用axiosvue应用程序

    摘要:要在我们的应用程序中显示模拟数据,可以在元素中写入指令用于渲染我们的列表。虽然这超出了本教程的范围,但建议用于更大或更复杂的应用程序。 这篇文章讲述了如何快速构建一个vue程序,并使用axios从远程获取数据。这是原文章的直通门 通常情况下,在构建JavaScript应用程序时,会从远程获取数据或使用API。我最近研究了一些公用API,发现有很多很酷的东西可以用在这些获取到的数据上。 ...

    william 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<