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-TreeView父子联动效果保持节点状态一致
Aug 12 Javascript
jquery异步循环获取功能实现代码
Sep 19 Javascript
jquery弹出框的用法示例(一)
Aug 26 Javascript
JavaScript改变HTML元素的样式改变CSS及元素属性
Nov 12 Javascript
js二维数组排序的简单示例代码
Jan 24 Javascript
angularJS中router的使用指南
Feb 09 Javascript
javascript瀑布流布局实现方法详解
Feb 17 Javascript
浅谈jQuery this和$(this)的区别及获取$(this)子元素对象的方法
Nov 29 Javascript
基于JS代码实现简单易用的倒计时 x 天 x 时 x 分 x 秒效果
Jul 13 Javascript
JS实现点击生成UUID的方法完整实例【基于jQuery】
Jun 12 jQuery
vuejs移动端实现div拖拽移动
Jul 25 Javascript
weui中的picker使用js进行动态绑定数据问题
Nov 06 Javascript
详解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
php5 apache 2.2 webservice 创建与配置(java)
2011/01/27 PHP
PHP zip扩展Linux下安装过程分享
2014/05/05 PHP
php封装的smartyBC类完整实例
2016/10/19 PHP
Javascript代码混淆综合解决方案-Javascript在线混淆器
2006/12/18 Javascript
推荐自用 Javascript 缩图函数 (onDOMLoaded)……
2007/10/23 Javascript
基于jQuery的倒计时实现代码
2012/05/30 Javascript
Vue.js每天必学之过渡与动画
2016/09/06 Javascript
jQuery autoComplete插件两种使用方式及动态改变参数值的方法详解
2016/10/24 Javascript
JavaScript获取当前时间向前推三个月的方法示例
2017/02/04 Javascript
快速搭建React的环境步骤详解
2017/11/06 Javascript
vue中axios解决跨域问题和拦截器的使用方法
2018/03/07 Javascript
红黑树的插入详解及Javascript实现方法示例
2018/03/26 Javascript
vue-router3.0版本中 router.push 不能刷新页面的问题
2018/05/10 Javascript
Vue使用高德地图搭建实时公交应用功能(地图 + 附近站点+线路详情 + 输入提示+换乘详情)
2018/05/16 Javascript
JavaScript实现的开关灯泡点击切换特效示例
2019/07/08 Javascript
[56:17]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第三场 8.22
2019/09/05 DOTA
从django的中间件直接返回请求的方法
2018/05/30 Python
Python设计模式之简单工厂模式实例详解
2019/01/22 Python
python 自动批量打开网页的示例
2019/02/21 Python
Python 实现毫秒级淘宝抢购脚本的示例代码
2019/09/16 Python
Python aiohttp百万并发极限测试实例分析
2019/10/26 Python
Tensorflow中的图(tf.Graph)和会话(tf.Session)的实现
2020/04/22 Python
如何用border-image实现文字气泡边框的示例代码
2020/01/21 HTML / CSS
佛罗里达州印第安河新鲜水果:Hale Groves
2017/02/20 全球购物
医学院毕业生自荐信
2013/11/08 职场文书
物业公司采购员岗位职责
2013/12/31 职场文书
晚归检讨书
2014/02/19 职场文书
小学生新年寄语
2014/04/03 职场文书
群众路线领导班子整改方案
2014/10/25 职场文书
见习报告的格式
2014/10/31 职场文书
医务人员医德考评自我评价
2015/03/03 职场文书
辩论赛开场白大全(主持人+辩手)
2015/05/29 职场文书
预备党员党支部意见
2015/06/02 职场文书
在职证明格式样本
2015/06/15 职场文书
Vue+Element UI实现概要小弹窗的全过程
2021/05/30 Vue.js
redis调用二维码时的不断刷新排查分析
2022/04/01 Redis