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 相关文章推荐
js 文件引入实现代码
Apr 23 Javascript
js RuntimeObject() 获取ie里面自定义函数或者属性的集合
Nov 23 Javascript
jquery插件lazyload.js延迟加载图片的使用方法
Feb 19 Javascript
手写的一个兼容各种浏览器的javascript getStyle函数(获取元素的样式)
Jun 06 Javascript
JS实现跟随鼠标立体翻转图片的方法
May 04 Javascript
Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法
Jun 23 Javascript
JavaScript制作弹出层效果
Dec 02 Javascript
JavaScript实现QQ聊天消息展示和评论提交功能
May 22 Javascript
JavaScript闭包原理与用法实例分析
Aug 10 Javascript
微信小程序判断用户是否需要再次授权获取个人信息
Jul 18 Javascript
使用p5.js实现动态GIF图片临摹重现
Oct 23 Javascript
(开源)微信小程序+mqtt,esp8266温湿度读取
Apr 02 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 删除文件与文件夹操作 unlink()与rmdir()这两个函数的使用
2011/07/17 PHP
php实现发送微信模板消息的方法
2015/03/07 PHP
PHP传值到不同页面的三种常见方式及php和html之间传值问题
2015/11/19 PHP
JS按位非(~)运算符与~~运算符的理解分析
2011/07/31 Javascript
页面只能打开一次Cooike如何实现
2012/12/04 Javascript
借助JavaScript脚本判断浏览器Flash Player信息的方法
2014/07/09 Javascript
JQuery.Ajax()的data参数类型实例详解
2015/11/20 Javascript
jQuery解析与处理服务器端返回xml格式数据的方法详解
2016/07/04 Javascript
Js动态设置rem来实现移动端字体的自适应代码
2016/10/14 Javascript
微信小程序 弹幕功能简单实例
2017/02/14 Javascript
BootStrap Table前台和后台分页对JSON格式的要求
2017/06/28 Javascript
JS通过调用微信API实现微信支付功能的方法示例
2017/06/29 Javascript
在iframe中使bootstrap的模态框在父页面弹出问题
2017/08/07 Javascript
详解webpack模块化管理和打包工具
2018/04/21 Javascript
5分钟学会Vue动画效果(小结)
2018/07/21 Javascript
浅谈Vue render函数在ElementUi中的应用
2018/09/06 Javascript
详解Vue源码之数据的代理访问
2018/12/11 Javascript
vue获取form表单的值示例
2019/10/29 Javascript
vue flex 布局实现div均分自动换行的示例代码
2020/08/05 Javascript
[38:23]完美世界DOTA2联赛循环赛 FTD vs PXG BO2第二场 11.01
2020/11/02 DOTA
使用Python编写vim插件的简单示例
2015/04/17 Python
使用python 3实现发送邮件功能
2018/06/15 Python
Python使用matplotlib绘制随机漫步图
2018/08/27 Python
对Python 3.5拼接列表的新语法详解
2018/11/08 Python
django连接oracle时setting 配置方法
2019/08/29 Python
利用PyQt5+Matplotlib 绘制静态/动态图的实现代码
2020/07/13 Python
Python eval函数介绍及用法
2020/11/09 Python
flask项目集成swagger的方法
2020/12/09 Python
CSS3制作炫酷带方向感应的鼠标滑过图片3D动画
2016/03/16 HTML / CSS
HTML5 Canvas像素处理使用接口介绍
2012/12/02 HTML / CSS
WiFi云数码相框:Nixplay
2018/07/05 全球购物
商务英语本科生的自我评价分享
2013/11/15 职场文书
法学专业本科生自荐信范文
2013/12/17 职场文书
广告设计专业毕业生自我鉴定
2014/09/27 职场文书
干部个人考察材料
2014/12/24 职场文书
golang 接口嵌套实现复用的操作
2021/04/29 Golang