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 相关文章推荐
一段效率很高的for循环语句使用方法
Aug 13 Javascript
js函数setTimeout延迟执行的简单介绍
Jul 17 Javascript
jquery根据name属性查找的小例子
Nov 21 Javascript
鼠标拖拽移动子窗体的JS实现
Feb 25 Javascript
Javascript动态引用CSS文件的2种方法介绍
Jun 06 Javascript
使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目
Feb 15 Javascript
基于JavaScript代码实现自动生成表格
Jun 15 Javascript
jQuery实现右下角可缩放大小的层完整实例
Jun 20 Javascript
基于Phantomjs生成PDF的实现方法
Nov 07 Javascript
vue2.0全局组件之pdf详解
Jun 26 Javascript
jQuery点击页面其他部分隐藏下拉菜单功能
Nov 27 jQuery
微信小程序实现音乐播放页面布局
Dec 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 随机生成10位字符代码
2009/03/26 PHP
php中转义mysql语句的实现代码
2011/06/24 PHP
PHP 使用header函数设置HTTP头的示例解析 表头
2013/06/17 PHP
php使用json_encode对变量json编码
2014/04/07 PHP
php基于curl扩展制作跨平台的restfule 接口
2015/05/11 PHP
详解PHP神奇又有用的Trait
2019/03/25 PHP
Javascript 面向对象 继承
2010/05/13 Javascript
IE8下String的Trim()方法失效的解决方法
2013/11/08 Javascript
jquery实现文本框数量加减功能的例子分享
2014/05/10 Javascript
node.js中的fs.fchown方法使用说明
2014/12/16 Javascript
JS+DIV实现鼠标划过切换层效果的方法
2015/05/25 Javascript
js获取当前年月日-YYYYmmDD格式的实现代码
2016/06/01 Javascript
ES6概念 Symbol.keyFor()方法
2016/12/25 Javascript
js将字符串中的每一个单词的首字母变为大写其余均为小写
2017/01/05 Javascript
使用yeoman构建angular应用的方法
2017/08/14 Javascript
基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果
2018/01/09 Javascript
vue中Npm run build 根据环境传递参数方法来打包不同域名
2018/03/29 Javascript
vue中js判断长时间不操作界面自动退出登录(推荐)
2020/01/22 Javascript
k8s node节点重新加入master集群的实现
2021/02/22 Javascript
Python操作RabbitMQ服务器实现消息队列的路由功能
2016/06/29 Python
Python 3中print函数的使用方法总结
2017/08/08 Python
Python微信库:itchat的用法详解
2017/08/14 Python
Python中支持向量机SVM的使用方法详解
2017/12/26 Python
Django异步任务之Celery的基本使用
2019/03/23 Python
pytorch实现Tensor变量之间的转换
2020/02/17 Python
python 在sql语句中使用%s,%d,%f说明
2020/06/06 Python
python绘图模块之利用turtle画图
2021/02/12 Python
如何开启linux的ssh服务
2013/06/03 面试题
英文版网络工程师求职信
2013/10/28 职场文书
租赁意向书范本
2014/04/01 职场文书
房屋买卖授权委托书
2014/09/27 职场文书
百万英镑观后感
2015/06/09 职场文书
聘任书格式及范文
2015/09/21 职场文书
php7中停止php-fpm服务的方法详解
2021/05/09 PHP
JS前端使用canvas实现扩展物体类和事件派发
2022/08/05 Javascript
HTML5中的DOCUMENT.VISIBILITYSTATE属性详解
2023/05/07 HTML / CSS