1. 定义根state:ajaxIsLoading
2. 在Axios拦截器中commit不同的状态实现状态切换
3. 组件中通过getter获取ajaxIsLoading状态

Axios 拦截器配置

import Vue from 'vue'
import Axios from 'axios'
import AppStore from '../store'
import * as types from '../store/mutation-types.js' Vue.prototype.$http = Axios Axios.interceptors.request.use(config => {
// console.log('ajax begin request')
AppStore.commit(types.AJAX_BEGIN_RQUEST)
return config;
}) Axios.interceptors.response.use(config => {
// console.log('ajax get response')
AppStore.commit(types.AJAX_END_REQUEST)
return config
})

Vuex

const state = {
ajaxIsLoading: false
} const mutations = {
['AJAX_BEGIN_REQUEST'](state) {
state.ajaxIsLoading = true
},
['AJAX_END_REQUEST'](state) {
state.ajaxIsLoading = false
}
} const getter = {
ajaxIsLoading: state => state.ajaxIsLoading
}

Loading.vue

<template>
<div id="loading-container" v-show="ajaxIsLoading">
<div id="loading" >
<img src="../assets/loading.gif" alt="loading">
</div>
</div>
</template>
<script>
import { mapGetters } from 'vuex'
export default {
name: 'loading',
computed: {
...mapGetters(['ajaxIsLoading']) }
}
</script>
<style>
#loading-container {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
opacity: .3;
background: #ccc;
z-index: 10000;
} #loading {
position: absolute;
left: 50%;
top: 50%;
width: 40px;
height: 40px;
z-index: 100001;
}
</style>

Vue2基于Axios Ajax Vuex的Loading组件的更多相关文章

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

    准备 利用vue-cli脚手架创建项目 进入项目安装vuex.axios(npm install vuex,npm install axios) axios配置 项目中安装axios模块(npm in ...

  2. vue2.0+webpack+vuerouter+vuex+axios构建项目基础

    前言 本文讲解的是vue2.0+webpack+vuerouter+vuex+axios构建项目基础 步骤 1.全局安装webpack,命令 npm install webpack -g 注意,web ...

  3. day 87 Vue学习六之axios、vuex、脚手架中组件传值

      本节目录 一 axios的使用 二 vuex的使用 三 组件传值 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 axios的使用 Axios 是一个基于 promise 的 HT ...

  4. day 84 Vue学习六之axios、vuex、脚手架中组件传值

    Vue学习六之axios.vuex.脚手架中组件传值   本节目录 一 axios的使用 二 vuex的使用 三 组件传值 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 axios的 ...

  5. 基于vue2.0打造移动商城页面实践 vue实现商城购物车功能 基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果

    基于vue2.0打造移动商城页面实践 地址:https://www.jianshu.com/p/2129bc4d40e9 vue实现商城购物车功能 地址:http://www.jb51.net/art ...

  6. vue2.0 仿手机新闻站(五)全局的 loading 组件

    1.组件结构 index.js const LoadingComponent = require('./Loading.vue') const loading = { install: functio ...

  7. [Loading Component]Loading组件的v-model设计是否不合理?

    vue在2.4.2版本中给computed里的属性加了限制,详见assigning to a computed property without setter does not fail 项目将vue ...

  8. vue全局loading组件

    本组件作用在页面加载完成前进行loader提示,提升用户体验,只需要在app.vue中引用一次,整个项目中路由切换时就可以自动进行提示(vuex版): 1. 添加vuex值和方法: import Vu ...

  9. axios和vuex

    0.babel 将es6代码转换成各个浏览器都能识别的代码 一.axios 1.官方网站 https://www.kancloud.cn/yunye/axios/234845 2.引用: (1)cdn ...

随机推荐

  1. JsonResponse对象浅析

    JsonResponse   JsonResponse 对象: class JsonResponse(data, encoder=DjangoJSONEncoder, safe=True, json_ ...

  2. Django的模型层(2) - 多表操作(下)

    一.多表查询 1.基于双下划线的跨表查询 Django 还提供了一种直观而高效的方式在查询(lookups)中表示关联关系,它能自动确认 SQL JOIN 联系.要做跨关系查询,就使用两个下划线来链接 ...

  3. hibernate set的3个属性

    inverse 属性 在hibernate中通过对 inverse 属性的来决定是由双向关联的哪一方来维护表和表之间的关系. inverse = false 的为主动方.inverse = true ...

  4. 多服务器之间Session共享

    原理:多个服务器间想共享session,就相当于共享取多台主机上的一个变量,所以共享的思路就是让大家都能读取变量,实现的方法可以通过将session保存到专门的一个服务器上,所有服务器都去请求数据,也 ...

  5. corethink功能模块探索开发(十七)opencmf.php 配置文件

    图样: opencmf.php存在于每个模块的根目录,是模块配置文件. 能进行持久化配置参数保存,一开始我以为是写文件或者做缓存,后来在数据库中发现admin_module表,存储了每个模块的配置参数 ...

  6. Linux一键安装web环境全攻略(阿里云ECS服务器)

    摘自阿里云服务器官网,此处 一键安装包下载: 点此下载 安装须知 1.此安装包可在阿里云所有linux系统上部署安装,此安装包包含的软件及版本为: nginx:1.0.15.1.2.5.1.4.4 a ...

  7. Sqrt(x)

    这题没多大技巧性,只是牛顿迭代法多用于数值计算,这里出现有些意外.维基上有方法说明:http://zh.wikipedia.org/wiki/牛顿法 int sqrt(int x) { if (x = ...

  8. iOS学习之应用偏好设置

    如今,即便是最简单的计算机程序也会包含一个偏好设置窗口,用户可以在其中设置应用专属的选项.在MAC OS X中,Preferences...菜单通常位于应用菜单中.选择该菜单项会弹出一个窗口,用户可以 ...

  9. JavaScript 函数,math对象,Date对象 序列化 总结

    函数 函数定义 // 普通函数定义 function f1() { console.log("Hello world!"); } // 带参数的函数 function f2(a, ...

  10. day13 迭代器

    迭代器 'iterable' 可迭代的 内部含有__iter__方法的数据类型就是可迭代的 —— 可迭代协议 print(dir([])) print(dir({})) print(dir(5)) p ...