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 相关文章推荐
javascript 支持链式调用的异步调用框架Async.Operation
Aug 04 Javascript
原生javascript实现的分页插件pagenav
Aug 28 Javascript
jQuery插件bxSlider实现响应式焦点图
Apr 12 Javascript
JavaScript实现定时隐藏与显示图片的方法
Aug 06 Javascript
jQuery实现带延迟的二级tab切换下拉列表效果
Sep 01 Javascript
图解js图片轮播效果
Dec 20 Javascript
Angularjs使用directive自定义指令实现attribute继承的方法详解
Aug 05 Javascript
js图片轮播手动切换特效
Jan 12 Javascript
layui lay-verify form表单自定义验证规则详解
Sep 18 Javascript
原生JS封装vue Tab切换效果
Apr 28 Vue.js
Node与Python 双向通信的实现代码
Jul 16 Javascript
详解Vue router路由
Nov 20 Vue.js
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+SqlServer实现分页显示
2006/10/09 PHP
php用正则表达式匹配URL的简单方法
2013/11/12 PHP
PHP中is_file不能替代file_exists的理由
2014/03/04 PHP
为PHP安装imagick时出现Cannot locate header file MagickWand.h错误的解决方法
2014/11/03 PHP
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
2016/11/03 PHP
ThinkPHP中调用PHPExcel的实现代码
2017/04/08 PHP
laravel中短信发送验证码的实现方法
2018/04/25 PHP
Laravel框架基于中间件实现禁止未登录用户访问页面功能示例
2019/01/17 PHP
php的优点总结 php有哪些优点
2019/07/19 PHP
js 点击页面其他地方关闭弹出层(示例代码)
2013/12/24 Javascript
jQuery使用$.ajax进行即时验证的方法
2015/12/08 Javascript
jQuery实现日期联动效果实例
2016/07/26 Javascript
详解nodeJS之二进制buffer对象
2017/06/03 NodeJs
微信小程序实现顶部选项卡(swiper)
2020/06/19 Javascript
JavaScript中Require调用js的实例分享
2017/10/27 Javascript
详解Node.js中path模块的resolve()和join()方法的区别
2018/10/29 Javascript
vue-cli3添加模式配置多环境变量的方法
2019/06/05 Javascript
vue 中 命名视图的用法实例详解
2019/08/14 Javascript
element-ui 实现响应式导航栏的示例代码
2020/05/08 Javascript
PYTHON基础-时间日期处理小结
2018/05/05 Python
彻彻底底地理解Python中的编码问题
2018/10/15 Python
python协程之动态添加任务的方法
2019/02/19 Python
python 普通克里金(Kriging)法的实现
2019/12/19 Python
Mamas & Papas沙特阿拉伯:英国最受欢迎的婴儿品牌
2017/11/20 全球购物
美国购买体育、音乐会和剧院门票网站:SelectATicket
2019/09/08 全球购物
乌克兰巴士票购买网站:inBus
2021/03/12 全球购物
.NET面试10题
2014/02/24 面试题
软件缺陷的分类都有哪些
2014/08/22 面试题
个人职业生涯规划书1500字
2013/12/31 职场文书
广告宣传策划方案
2014/05/21 职场文书
班级文化建设标语
2014/06/23 职场文书
考试作弊检讨书
2014/10/21 职场文书
烟台的海导游词
2015/02/02 职场文书
酒店圣诞节活动总结
2015/05/06 职场文书
2016优秀员工先进事迹材料
2016/02/25 职场文书
python lambda 表达式形式分析
2022/04/03 Python