vue全局使用axios的操作


Posted in Javascript onSeptember 08, 2020

在vue项目开发中,我们使用axios进行ajax请求,很多人一开始使用axios的方式,会当成vue-resoure的使用方式来用,即在主入口文件引入import VueResource from 'vue-resource'之后,直接使用Vue.use(VueResource)之后即可将该插件全局引用了,所以axios这样使用的时候就报错了,很懵逼。

仔细看看文档,就知道axios 是一个基于 promise 的 HTTP 库,axios并没有install 方法,所以是不能使用vue.use()方法的。☞查看vue插件

那么难道我们要在每个文件都要来引用一次axios吗?多繁琐!!!解决方法有很多种:

1.结合 vue-axios使用

2.axios 改写为 Vue 的原型属性

3.结合 Vuex的action

1.结合 vue-axios使用

看了vue-axios的源码,它是按照vue插件的方式去写的。那么结合vue-axios,就可以去使用vue.use方法了

首先在主入口文件main.js中引用:

import axios from 'axios'
import VueAxios from 'vue-axios'

Vue.use(VueAxios,axios);

之后就可以使用了,在组件文件中的methods里去使用了:

getNewsList(){
   this.axios.get('api/getNewsList').then((response)=>{
    this.newsList=response.data.data;
   }).catch((response)=>{
    console.log(response);
   })
}

2.axios 改写为 Vue 的原型属性(不推荐这样用)

首先在主入口文件main.js中引用,之后挂在vue的原型链上:

import axios from 'axios'

Vue.prototype.$ajax= axios

在组件中使用:

this.$ajax.get('api/getNewsList')
.then((response)=>{
  this.newsList=response.data.data;
}).catch((response)=>{
  console.log(response);
})

结合 Vuex的action

在vuex的仓库文件store.js中引用,使用action添加方法

import Vue from 'Vue'
import Vuex from 'vuex'
import axios from 'axios'

Vue.use(Vuex)
const store = new Vuex.Store({
 // 定义状态
 state: {
  user: {
   name: 'xiaoming'
  }
 },
 actions: {
  // 封装一个 ajax 方法
  login (context) {
   axios({
    method: 'post',
    url: '/user',
    data: context.state.user
   })
  }
 }
})

export default store

在组件中发送请求的时候,需要使用 this.$store.dispatch

methods: {
 submitForm () {
  this.$store.dispatch('login')
 }
}

补充知识:ElementUI 在VUE中配置 main.js与axios的关系

一、在main.js中:

import ElementUI from 'element-ui'

Vue.use(ElementUI)

二、在main.js中,数据请求axios不能在这里配置

以上这篇vue全局使用axios的操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
10个基于jQuery或JavaScript的WYSIWYG 编辑器整理
May 06 Javascript
Javascript改变CSS样式(局部和全局)
Dec 18 Javascript
解析JavaScript的ES6版本中的解构赋值
Jul 28 Javascript
延时加载JavaScript代码提高速度
Dec 27 Javascript
checkbox 选中一个另一个checkbox也会选中的实现代码
Jul 09 Javascript
使用ef6创建oracle数据库的实体模型遇到的问题及解决方案
Nov 09 Javascript
vue实现在表格里,取每行的id的方法
Mar 09 Javascript
vue异步axios获取的数据渲染到页面的方法
Aug 09 Javascript
bootstrap table合并行数据并居中对齐效果
Oct 17 Javascript
详解如何更好的使用module vuex
Mar 27 Javascript
Vue 动态添加路由及生成菜单的方法示例
Jun 20 Javascript
如何实现一个简易版的vuex持久化工具
Sep 11 Javascript
Vue自定义多选组件使用详解
Sep 08 #Javascript
vue项目中微信登录的实现操作
Sep 08 #Javascript
关于element-ui表单中限制输入纯数字的解决方式
Sep 08 #Javascript
快速解决element的autofocus失效问题
Sep 08 #Javascript
vue axios请求成功却进入catch的原因分析
Sep 08 #Javascript
JavaScript数组类型Array相关的属性与方法详解
Sep 08 #Javascript
vue中后端做Excel导出功能返回数据流前端的处理操作
Sep 08 #Javascript
You might like
第七章 php自定义函数实现代码
2011/12/30 PHP
php下载文件的代码示例
2012/06/29 PHP
PHP实现简单汉字验证码
2015/07/28 PHP
jQuery中first()方法用法实例
2015/01/06 Javascript
jQuery解决$符号命名冲突
2016/06/18 Javascript
jQuery+Pdo编写login登陆界面
2016/08/01 Javascript
AngularJs  Using $location详解及示例代码
2016/09/02 Javascript
bootstrap datetimepicker2.3.11时间插件使用
2016/11/19 Javascript
nodejs实现发出蜂鸣声音(系统报警声)的方法
2017/01/18 NodeJs
JavaScript字符串对象(string)基本用法示例
2017/01/18 Javascript
js限制input只能输入有效的数字(第一个不能是小数点)
2018/09/28 Javascript
解决axios post 后端无法接收数据的问题
2019/10/29 Javascript
JS面向对象编程基础篇(一) 对象和构造函数实例详解
2020/03/03 Javascript
微信小程序实现购物车小功能
2020/12/30 Javascript
[04:55]完美世界副总裁蔡玮:DOTA2的自由、公平与信任
2013/12/18 DOTA
[50:29]2014 DOTA2华西杯精英邀请赛 5 24 DK VS iG
2014/05/26 DOTA
Python中的魔法方法深入理解
2014/07/09 Python
Python中的sort()方法使用基础教程
2017/01/08 Python
Python打印“菱形”星号代码方法
2018/02/05 Python
python3连接MySQL数据库实例详解
2018/05/24 Python
删除pycharm鼠标右键快捷键打开项目的操作
2021/01/16 Python
AmazeUI底部导航栏与分享按钮的示例代码
2020/08/18 HTML / CSS
智利最大的网上商店:Linio智利
2016/11/24 全球购物
韩国家庭购物网上商店:Nsmall
2017/05/07 全球购物
预订全球最佳旅行体验:Viator
2018/03/30 全球购物
德国黑胶唱片、街头服装及运动鞋网上商店:HHV
2018/08/24 全球购物
咖啡厅创业计划书范本
2014/01/22 职场文书
九年级历史教学反思
2014/01/27 职场文书
白酒市场营销方案
2014/02/25 职场文书
投资合作协议书范本
2014/04/17 职场文书
2014年消防工作总结
2014/11/21 职场文书
先进党支部事迹材料
2014/12/24 职场文书
白鹤梁导游词
2015/02/06 职场文书
道德与公民自我评价
2015/03/09 职场文书
golang 实用库gotable的具体使用
2021/07/01 Golang
Python下载商品数据并连接数据库且保存数据
2022/03/31 Python