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之典型高阶函数应用介绍二
Jan 10 Javascript
js遍历子节点子元素附属性及方法
Aug 19 Javascript
javascript截取字符串小结
Apr 28 Javascript
原生JS实现平滑回到顶部组件
Mar 16 Javascript
详细总结Javascript中的焦点管理
Sep 17 Javascript
jQuery给指定的table动态添加删除行的操作方法
Oct 12 Javascript
Javascript this 函数深入详解
Dec 13 Javascript
Bootstrap响应式表格详解
May 23 Javascript
详解AngularJS用Interceptors来统一处理HTTP请求和响应
Jun 08 Javascript
SeaJS中use函数用法实例分析
Oct 10 Javascript
详解三种方式解决vue中v-html元素中标签样式
Nov 22 Javascript
微信小程序实现搜索功能
Mar 10 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
php 验证码制作(网树注释思想)
2009/07/20 PHP
PHP生成随机密码类分享
2014/06/25 PHP
C#静态方法与非静态方法实例分析
2014/09/22 PHP
在Linux系统下一键重新安装WordPress的脚本示例
2015/06/30 PHP
php实现文件管理与基础功能操作
2017/03/21 PHP
thinkPHP框架中执行原生SQL语句的方法
2017/10/25 PHP
浅谈laravel框架sql中groupBy之后排序的问题
2019/10/17 PHP
VS2008中使用JavaScript调用WebServices
2014/12/18 Javascript
JavaScript模板引擎用法实例
2015/07/10 Javascript
倾力总结40条常见的移动端Web页面问题解决方案
2016/05/24 Javascript
jQuery解决IE6、7、8不能使用 JSON.stringify 函数的问题
2016/05/31 Javascript
浅谈angularjs依赖服务注入写法的注意点
2017/04/24 Javascript
js原生日历的实例(推荐)
2017/10/31 Javascript
浅谈Koa2框架利用CORS完成跨域ajax请求
2018/03/06 Javascript
微信小程序五子棋游戏的棋盘,重置,对弈实现方法【附demo源码下载】
2019/02/20 Javascript
微信小程序常用赋值方法小结
2019/04/30 Javascript
深入了解Hybrid App技术的相关知识
2019/07/17 Javascript
Vue事件处理原理及过程详解
2020/03/11 Javascript
JS字符串补全方法padStart()和padEnd()
2020/05/27 Javascript
Fabric 应用案例
2016/08/28 Python
Python实现计算圆周率π的值到任意位的方法示例
2018/05/08 Python
python之当你发现QTimer不能用时的解决方法
2019/06/21 Python
手把手教你进行Python虚拟环境配置教程
2020/02/03 Python
html5+css3之制作header实例与更新
2020/12/21 HTML / CSS
销售总监岗位职责
2014/01/04 职场文书
门前三包责任书
2014/04/15 职场文书
贸易跟单员英文求职信
2014/04/19 职场文书
病媒生物防治方案
2014/05/13 职场文书
党员群众路线整改措施及今后努力方向
2014/10/28 职场文书
公司2015年终工作总结
2015/05/26 职场文书
婚庆主持词大全
2015/06/30 职场文书
《七月的天山》教学反思
2016/02/19 职场文书
python 爬取豆瓣网页的示例
2021/04/13 Python
HTML页面滚动时部分内容位置固定不滚动的实现
2021/04/14 HTML / CSS
Spark SQL 2.4.8 操作 Dataframe的两种方式
2021/10/16 SQL Server
HttpClient实现表单提交上传文件
2022/08/14 Java/Android