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 相关文章推荐
利用进制转换压缩数字函数分享
Jan 02 Javascript
删除条目时弹出的确认对话框
Jun 05 Javascript
给js文件传参数(详解)
Jul 13 Javascript
jquery+html5制作超酷的圆盘时钟表
Apr 14 Javascript
js实现跨域的4种实用方法原理分析
Oct 29 Javascript
Javascript中indexOf()和lastIndexOf应用方法实例
Aug 24 Javascript
javascript 判断页面访问方式电脑或者移动端
Sep 19 Javascript
JavaScript 随机验证码的生成实例代码
Sep 22 Javascript
ES6新特性之解构、参数、模块和记号用法示例
Apr 01 Javascript
vue使用 better-scroll的参数和方法详解
Jan 25 Javascript
分享5个顶级的JavaScript Ajax组件库
Sep 16 Javascript
vue-cli打包后本地运行dist文件中的index.html操作
Aug 12 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
PHP概述.
2006/10/09 PHP
基于empty函数的输出详解
2013/06/17 PHP
PHP文件锁函数flock()详细介绍
2014/11/18 PHP
PHP实现抓取迅雷VIP账号的方法
2015/07/30 PHP
php中session定期自动清理的方法
2015/11/12 PHP
smarty循环嵌套用法示例分析
2016/07/19 PHP
滚动经典最新话题[prototype框架]下编写
2006/10/03 Javascript
简易的投票系统以及js刷票思路和方法
2015/04/07 Javascript
jquery插件star-rating.js实现星级评分特效
2015/04/15 Javascript
Javascript 实现微信分享(QQ、朋友圈、分享给朋友)
2016/10/21 Javascript
jQuery实现6位数字密码输入框
2016/12/29 Javascript
Easyui Datagrid自定义按钮列(最后面的操作列)
2017/07/13 Javascript
jquery select插件异步实时搜索实例代码
2017/10/20 jQuery
vue 引入公共css文件的简单方法(推荐)
2018/01/20 Javascript
javaScript实现鼠标在文字上悬浮时弹出悬浮层效果
2020/04/12 Javascript
vue完成项目后,打包成静态文件的方法
2018/09/03 Javascript
深入理解Puppeteer的入门教程和实践
2019/03/05 Javascript
vscode+gulp轻松开发小程序的完整步骤
2020/10/18 Javascript
Python实现抓取网页并且解析的实例
2014/09/20 Python
Python实现统计单词出现的个数
2015/05/28 Python
Python tkinter label 更新方法
2018/10/11 Python
Python调用接口合并Excel表代码实例
2020/03/31 Python
Keras官方中文文档:性能评估Metrices详解
2020/06/15 Python
html5中svg canvas和图片之间相互转化思路代码
2014/01/24 HTML / CSS
AmazeUI 手机版页面的顶部导航条Header与侧边导航栏offCanvas的示例代码
2020/08/19 HTML / CSS
努比亚手机官网:nubia
2016/10/06 全球购物
纽约香氛品牌:NEST Fragrance
2018/10/15 全球购物
香港通票:Hong Kong Pass
2019/02/26 全球购物
世界上最大的字体市场:MyFonts
2020/01/10 全球购物
俄罗斯GamePark游戏商店网站:购买游戏、游戏机和配件
2020/03/13 全球购物
《雪儿》教学反思
2014/04/17 职场文书
个人合伙协议书范本
2014/10/14 职场文书
护理医院见习报告
2014/11/03 职场文书
股东出资协议书
2016/03/21 职场文书
保安辞职申请书应该怎么写?
2019/07/15 职场文书
Java Spring Lifecycle的使用
2022/05/06 Java/Android