Vue2基于Axios Ajax Vuex的Loading组件
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组件的更多相关文章
- Vue基于vuex、axios拦截器实现loading效果及axios的安装配置
准备 利用vue-cli脚手架创建项目 进入项目安装vuex.axios(npm install vuex,npm install axios) axios配置 项目中安装axios模块(npm in ...
- vue2.0+webpack+vuerouter+vuex+axios构建项目基础
前言 本文讲解的是vue2.0+webpack+vuerouter+vuex+axios构建项目基础 步骤 1.全局安装webpack,命令 npm install webpack -g 注意,web ...
- day 87 Vue学习六之axios、vuex、脚手架中组件传值
本节目录 一 axios的使用 二 vuex的使用 三 组件传值 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 axios的使用 Axios 是一个基于 promise 的 HT ...
- day 84 Vue学习六之axios、vuex、脚手架中组件传值
Vue学习六之axios.vuex.脚手架中组件传值 本节目录 一 axios的使用 二 vuex的使用 三 组件传值 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 axios的 ...
- 基于vue2.0打造移动商城页面实践 vue实现商城购物车功能 基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果
基于vue2.0打造移动商城页面实践 地址:https://www.jianshu.com/p/2129bc4d40e9 vue实现商城购物车功能 地址:http://www.jb51.net/art ...
- vue2.0 仿手机新闻站(五)全局的 loading 组件
1.组件结构 index.js const LoadingComponent = require('./Loading.vue') const loading = { install: functio ...
- [Loading Component]Loading组件的v-model设计是否不合理?
vue在2.4.2版本中给computed里的属性加了限制,详见assigning to a computed property without setter does not fail 项目将vue ...
- vue全局loading组件
本组件作用在页面加载完成前进行loader提示,提升用户体验,只需要在app.vue中引用一次,整个项目中路由切换时就可以自动进行提示(vuex版): 1. 添加vuex值和方法: import Vu ...
- axios和vuex
0.babel 将es6代码转换成各个浏览器都能识别的代码 一.axios 1.官方网站 https://www.kancloud.cn/yunye/axios/234845 2.引用: (1)cdn ...
随机推荐
- Super Jumping! Jumping! Jumping!---hdu1087(动态规划)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1087 题意就是给你n个数,找出某个序列的最大和,这个序列满足依次增大的规则: 哎,这个题之前做过,但是 ...
- Java Synchronized 遇上 静态/实例方法 、静态/实例变量
同步 1)同步方法 2)同步块 21) 实例变量 22) 类变量 锁定的内容 1)锁定类的某个特定实例 2)锁定类对象(类的所有实例) 一.同步类实例:同步方法 public class Demo { ...
- Mysql学习笔记—索引
一.什么是索引 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,所以查询语句的优化显然是重中之重. 在数据 ...
- 添加github ssh 公钥
1.在控制台输入命令: ssh-keygen -t rsa -C "github上的邮箱地址" 2.将公匙复制后添加到github网站: id_rsa.pub文件 3.测试是 ...
- go——数组
数组(array)就是由若干个相同类型的元素组成的序列. var ipv4 [4]uint8 = [4]uint8(192,168,0,1) 在这条赋值语句中,我们为刚声明的变量ipv4赋值.在这种情 ...
- 微信小程序组件button
表单组件button:官方文档 Demo Code: var types=['default', 'primary', 'warn']; var pageObject = { data: { defa ...
- master: Error: JAVA_HOME is not set and could not be found.问题解决
- hadoop20---代理另一种方式
package cn.itcast_05_proxy.service; /** * 这是一个业务的接口,这个接口中的业务就是返回衣服的价格 */ public interface IBoss {//接 ...
- RAID详解[RAID0/RAID1/RAID5]
RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失 ...
- 【Python】进程和线程
多进程 多线程 ThreadLocal 进程vs线程 分布式进程 Top 学习廖老师的py官网的笔记 多任务的实现方式有三种方式: 1.多进程 2.多线程 3.多进程+多线程(这种比较复杂,实际很少采 ...