Vue基于vuex、axios拦截器实现loading效果及axios的安装配置


Posted in Javascript onApril 26, 2019

准备

  • 利用vue-cli脚手架创建项目
  • 进入项目安装vuex、axios(npm install vuex,npm install axios)

axios配置

项目中安装axios模块(npm install axios)完成后,进行以下配置:

main.js

//引入axios
import Axios from 'axios'
//修改原型链,全局使用axios,这样之后可在每个组件的methods中调用$axios命令完成数据请求
Vue.prototype.$axios=Axios

loading组件

我这里就选择使用iview提供的loading组件,

npm install iview

main.js
import iView from 'iview';
import 'iview/dist/styles/iview.css';
Vue.use(iView);

安装引入后,将loading写成一个组件loading.vue

Vue基于vuex、axios拦截器实现loading效果及axios的安装配置

Vuex state状态设置控制loading的显隐

store.js(Vuex)

export const store = new Vuex.Store({
  state:{
    isShow:false
  }
})

在state中定义isShow属性,默认false隐藏

v-if="this.$store.state.isShow"

为loading组件添加v-if绑定state中的isShow

组件使用axios请求数据

<button @click="getData">请求数据</button>
methods:{
    getData(){
      this.$axios.get('https://www.apiopen.top/journalismApi')
      .then(res=>{
        console.log(res)//返回请求的结果
      })
      .catch(err=>{
        console.log(err)
      })
    }
  }

我这里使用一个按钮进行触发事件,利用get请求网上随便找的一个api接口,.then中返回请求的整个结果(不仅仅包括数据)

Axios拦截器配置

main.js

//定义一个请求拦截器
Axios.interceptors.request.use(function(config){
 store.state.isShow=true; //在请求发出之前进行一些操作
 return config
})
//定义一个响应拦截器
Axios.interceptors.response.use(function(config){
 store.state.isShow=false;//在这里对返回的数据进行处理
 return config
})

分别定义一个请求拦截器(请求开始时执行某些操作)、响应拦截器(接受到数据后执行某些操作),之间分别设置拦截时执行的操作,改变state内isShow的布尔值从而控制loading组件在触发请求数据开始时显示loading,返回数据时隐藏loading

特别注意:这里有一个语法坑(我可是来来回回踩了不少次)main.js中调取、操作vuex state中的数据不同于组件中的this.$store.state,而是直接store.state 同上面代码

效果展示

Vue基于vuex、axios拦截器实现loading效果及axios的安装配置

Vue基于vuex、axios拦截器实现loading效果及axios的安装配置

总结

以上所述是小编给大家介绍的Vue基于vuex、axios拦截器实现loading效果及axios的安装配置,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
一段好玩的JavaScript代码
Dec 01 Javascript
jQuery AnythingSlider滑动效果插件
Feb 07 Javascript
javascript学习笔记(十四) window对象使用介绍
Jun 20 Javascript
js原型继承的两种方法对比介绍
Mar 30 Javascript
jQuery+HTML5实现手机摇一摇换衣特效
Jun 05 Javascript
Bootstrap的图片轮播示例代码
Aug 31 Javascript
JavaScript实现简单的tab选项卡切换
Jan 05 Javascript
Vue系列:通过vue-router如何传递参数示例
Jan 16 Javascript
实例讲解vue源码架构
Jan 24 Javascript
用Angular实现一个扫雷的游戏示例
May 15 Javascript
vue 使用rules对表单字段进行校验的步骤
Dec 25 Vue.js
Vue 3自定义指令开发的相关总结
Jan 29 Vue.js
详解auto-vue-file:一个自动创建vue组件的包
Apr 26 #Javascript
vue组件间的参数传递实例详解
Apr 26 #Javascript
详解VUE前端按钮权限控制
Apr 26 #Javascript
微信小程序开发之点击按钮退出小程序的实现方法
Apr 26 #Javascript
js最实用string(字符串)类型的使用及截取与拼接详解
Apr 26 #Javascript
微信小程序实现的绘制table表格功能示例
Apr 26 #Javascript
Vue使用Canvas绘制图片、矩形、线条、文字,下载图片
Apr 26 #Javascript
You might like
PHP音乐采集(部分代码)
2007/02/14 PHP
php生成PDF格式文件并且加密
2015/06/22 PHP
PHP实现长文章分页实例代码(附源码)
2016/02/03 PHP
php抽奖概率算法(刮刮卡,大转盘)
2020/04/17 PHP
基于PHP实现栈数据结构和括号匹配算法示例
2017/08/10 PHP
Prototype 学习 Prototype对象
2009/07/12 Javascript
Node.js中AES加密和其它语言不一致问题解决办法
2014/03/10 Javascript
javascript随机抽取0-100之间不重复的10个数
2016/02/25 Javascript
JavaScript:Date类型全面解析
2016/05/19 Javascript
jQuery使用EasyUi实现三级联动下拉框效果
2017/03/08 Javascript
详解Angular 4.x Injector
2017/05/04 Javascript
基于jQuery的左滑出现删除按钮的示例
2017/08/29 jQuery
node文字生成图片的示例代码
2017/10/26 Javascript
基于jQuery ztree实现表格风格的树状结构
2018/08/31 jQuery
解决微信小程序中的滚动穿透问题
2019/09/16 Javascript
vue data恢复初始化数据的实现方法
2019/10/31 Javascript
使用 Jest 和 Supertest 进行接口端点测试实例详解
2020/04/25 Javascript
[13:25]VP vs VICI (BO3)
2018/06/07 DOTA
[01:04]不如跳舞!DOTA2新英雄玛尔斯的欢乐日常
2019/03/11 DOTA
Python中的条件判断语句基础学习教程
2016/02/07 Python
Python如何快速实现分布式任务
2017/07/06 Python
Python 2.7中文显示与处理方法
2018/07/16 Python
python实现根据文件格式分类
2019/10/31 Python
一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃
2020/11/02 Python
html5+css3之动画在webapp中的应用
2014/11/21 HTML / CSS
Prototype如何为一个Ajax添加一个参数
2015/12/06 面试题
饮料业务员岗位职责
2013/12/15 职场文书
行政专员的岗位职责
2014/03/10 职场文书
产品发布会策划方案
2014/05/12 职场文书
创新社会管理心得体会
2014/09/12 职场文书
纪念九一八事变演讲稿:勿忘国耻
2014/09/14 职场文书
手机销售员岗位职责
2015/04/11 职场文书
运动会通讯稿300字
2015/07/20 职场文书
人生感悟经典句子
2019/08/20 职场文书
聘任书的格式及模板
2019/10/28 职场文书
Python常遇到的错误和异常
2021/11/02 Python