vue全局使用axios的方法实例详解


Posted in Javascript onNovember 22, 2018

在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);
})

3.结合 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')
 }
}

总结

以上所述是小编给大家介绍的vue全局使用axios的方法实例详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
htm调用JS代码
Mar 15 Javascript
几个比较经典常用的jQuery小技巧
Mar 01 Javascript
javascript 进阶篇3 Ajax 、JSON、 Prototype介绍
Mar 14 Javascript
在javascript中执行任意html代码的方法示例解读
Dec 25 Javascript
css与javascript跨浏览器兼容性总结
Sep 15 Javascript
js实现瀑布流的三种方式比较
Jun 28 Javascript
Bootstrap3.0建站教程(一)之bootstrap表单元素排版
Jun 01 Javascript
Vue插件写、用详解(附demo)
Mar 20 Javascript
fullPage.js和CSS3实现全屏滚动效果
May 05 Javascript
基于AngularJS的拖拽文件上传的实例代码
Jul 15 Javascript
vue-cli实现多页面多路由的示例代码
Jan 30 Javascript
Vue一个案例引发的递归组件的使用详解
Nov 15 Javascript
vue中的ref和$refs的使用
Nov 22 #Javascript
浅析vue 函数配置项watch及函数 $watch 源码分享
Nov 22 #Javascript
原生JS实现手动轮播图效果实例代码
Nov 22 #Javascript
js实现按钮开关单机下拉菜单效果
Nov 22 #Javascript
vue+node实现图片上传及预览的示例方法
Nov 22 #Javascript
微信上传视频文件提示(推荐)
Nov 22 #Javascript
vue-cli3.0如何使用CDN区分开发、生产、预发布环境
Nov 22 #Javascript
You might like
Terran剧情介绍
2020/03/14 星际争霸
DOTA2 1月28日更新:监管系统降临刀塔世界
2021/01/28 DOTA
如何批量替换相对地址为绝对地址(利用bat批处理实现)
2013/05/27 PHP
查找php配置文件php.ini所在路径的二种方法
2014/05/26 PHP
PHP调试的强悍利器之PHPDBG
2016/02/22 PHP
php 调用百度sms来发送短信的实现示例
2018/11/02 PHP
jQuery使用手册之二 DOM操作
2007/03/24 Javascript
jQuery 1.8 Release版本发布了
2012/08/14 Javascript
网页整体变灰白色(兼容各浏览器)实例
2013/04/21 Javascript
JS 精确统计网站访问量的实例代码
2013/07/05 Javascript
JSON.stringify转换JSON时日期时间不准确的解决方法
2014/08/08 Javascript
node.js集成百度UE编辑器
2015/02/05 Javascript
基于jQuery实现网页进度显示插件
2015/03/04 Javascript
AngularJS自动表单验证
2016/02/01 Javascript
jquery分页插件jquery.pagination.js实现无刷新分页
2016/04/01 Javascript
第五篇Bootstrap 排版
2016/06/21 Javascript
微信小程序仿RadioGroup改变样式的处理方案
2018/07/13 Javascript
微信小程序保存多张图片的实现方法
2019/03/05 Javascript
原生JS实现汇率转换功能代码实例
2020/05/13 Javascript
[02:23]1个至宝=115个英雄特效 最“绿”至宝拉比克“魔导师密钥”登场
2018/12/29 DOTA
wxPython中listbox用法实例详解
2015/06/01 Python
基于Python爬取爱奇艺资源过程解析
2020/03/02 Python
python爬虫开发之PyQuery模块详细使用方法与实例全解
2020/03/09 Python
django的403/404/500错误自定义页面的配置方式
2020/05/21 Python
Python CSS选择器爬取京东网商品信息过程解析
2020/06/01 Python
h5网页水印SDK的实现代码示例
2019/02/19 HTML / CSS
Cotton On美国网站:澳洲时装连锁品牌
2016/10/25 全球购物
函授自我鉴定范文
2014/02/06 职场文书
周年庆典主持词
2014/04/02 职场文书
乡镇党员干部群众路线对照检查材料思想汇报
2014/09/28 职场文书
老兵退伍标语
2014/10/07 职场文书
关于迟到的检讨书
2015/05/06 职场文书
成人成长感言如何写?
2019/08/16 职场文书
Python学习之时间包使用教程详解
2022/03/21 Python
SQL Server中锁的用法
2022/05/20 SQL Server
利用nginx搭建RTMP视频点播、直播、HLS服务器
2022/05/25 Servers