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 相关文章推荐
最新的10款jQuery内容滑块插件分享
Sep 18 Javascript
node.js中的fs.symlinkSync方法使用说明
Dec 15 Javascript
jquery+CSS实现的水平布局多级网页菜单效果
Aug 24 Javascript
微信小程序 wxapp导航 navigator详解
Oct 31 Javascript
Angular2 父子组件数据通信实例
Jun 22 Javascript
JavaScript实现打印星型金字塔功能实例分析
Sep 27 Javascript
JS数组求和的常用方法实例小结
Jan 07 Javascript
vue-cli创建的项目中的gitHooks原理解析
Feb 14 Javascript
element el-tree组件的动态加载、新增、更新节点的实现
Feb 27 Javascript
详解小程序横屏方案对比
Jun 28 Javascript
JavaScript实现五子棋小游戏
Oct 26 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
收音机史话 - 1960年代前后的DIY
2021/03/02 无线电
PHP MSSQL 存储过程的方法
2008/12/24 PHP
深入PHP操作MongoDB的技术总结
2013/06/02 PHP
PHP生成不重复随机数的方法汇总
2014/11/19 PHP
WordPress中使主题支持小工具以及添加插件启用函数
2015/12/22 PHP
Yii2框架RESTful API 格式化响应,授权认证和速率限制三部分详解
2016/11/10 PHP
PHP代码加密的方法总结
2020/03/13 PHP
jquery控制listbox中项的移动并排序
2009/11/12 Javascript
利用jQuery 实现GridView异步排序、分页的代码
2010/02/06 Javascript
关于IE浏览器以及Firefox下的javascript冒泡事件的响应层级
2010/10/14 Javascript
Google AJAX 搜索 API实现代码
2010/11/17 Javascript
js弹出层(jQuery插件形式附带reLoad功能)
2013/04/12 Javascript
JavaScript弹出新窗口并控制窗口移动到指定位置的方法
2015/04/06 Javascript
jQuery插件formValidator自定义函数扩展功能实例详解
2015/11/25 Javascript
JQuery EasyUI Layout 在from布局自适应窗口大小的实现方法
2016/05/28 Javascript
canvas实现流星雨的背景效果
2017/01/13 Javascript
iframe与主框架跨域相互访问实现方法
2017/09/14 Javascript
python 3.5下xadmin的使用及修复源码bug
2017/05/10 Python
Python中捕获键盘的方式详解
2019/03/28 Python
Python实现制度转换(货币,温度,长度)
2019/07/14 Python
在python中创建指定大小的多维数组方式
2019/11/28 Python
python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例
2020/02/28 Python
PyInstaller将Python文件打包为exe后如何反编译(破解源码)以及防止反编译
2020/04/15 Python
python如何调用java类
2020/07/05 Python
Numpy(Pandas)删除全为零的列的方法
2020/09/11 Python
CSS3简单实现照片墙
2014/12/12 HTML / CSS
使用HTML5的Canvas绘制曲线的简单方法
2015/09/08 HTML / CSS
Debenhams百货英国官方网站:Debenhams UK
2016/07/12 全球购物
Cotton On香港网站:澳洲时装连锁品牌
2018/11/01 全球购物
Mansur Gavriel官网:纽约市的一个设计品牌
2019/05/02 全球购物
日本酒店、民宿、温泉旅馆、当地旅行团中文预订:e路东瀛
2019/12/09 全球购物
创先争优一句话承诺
2014/05/29 职场文书
大学生工作求职信
2014/06/23 职场文书
学校教研活动总结
2014/07/02 职场文书
学历证明范文
2015/06/16 职场文书
新手必备之MySQL msi版本下载安装图文详细教程
2021/05/21 MySQL