vue 全局封装loading加载教程(全局监听)


Posted in Javascript onNovember 05, 2020

前言:

为了页面美观,请求接口的时候延迟没有数据,页面感觉狠卡顿,封装loading,请求接口成功后隐藏掉(我这是用的vant 组件根据自己情况进行改变)。

第一步:

建立loading.vue

<template>
 <div class="loading">
 <van-loading size="36px" vertical>加载中...</van-loading>
 </div>
</template>

<script>
export default {
 props: {},
 data() {
 return {};
 },
 computed: {},
 created() {},
 mounted() {},
};
</script>

<style scoped>
</style>

第二步:

app.vue引入 增加开关

vue 全局封装loading加载教程(全局监听)

vue 全局封装loading加载教程(全局监听)

代码:

<loading v-show="isLoading"></loading>
import { mapState } from "vuex";
import loading from "./components/loading";

 computed: {
 ...mapState(["isLoading"])
 },
 components: {
 loading
 },

//css
.loading {
 width: 100%;
 height: 100%;
 left: 0;
 top: 0;
 position: fixed;
 padding-top: 5.333333rem;
}

第三步:

vuex 保存状态

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)

const store = new Vuex.Store({
 state: {
 isLoading: false//loading全局开关
 },
 mutations: {
 changeisLoading(state, data) {
 state.isLoading = data
 }
 },
})
export default store

第四步:

监听接口状态,全局改变isLoading状态(main.js引入或者自己在引入一个js)

// 请求拦截器
axios.interceptors.request.use(
 config => {
 // 改变vuex中的isLoading状态数据,当为true,loading显示
 store.state.isLoading = true
 return config;
 },
 error => {
 return Promise.error(error);
 }
);

// 响应拦截器
axios.interceptors.response.use(
 response => {
 // 如果返回的状态码为200,说明接口请求成功,可以正常拿到数据
 // 否则的话抛出错误
 if (response.status === 200) {
 //loading隐藏
 store.state.isLoading = false
 return Promise.resolve(response);
 } else {
 return Promise.reject(response);
 }
 },
 error => {
 if (error.response.status) {
 return Promise.reject(error.response);
 }
 }
);

OK 封装完成!

补充知识:vue-cli4 APP热更新失效不可以及时更新

前言

项目中遇到问题,热更新失效,不能每次及时提醒,百度了很多方法,效果不是狠显著,后来发现webpack4.0需要手动配置开启热更新,默认没有开启

解决办法

一,安装依赖webpack-dev-server

根据自己的情况安装npm / cnpm

npm install --save-dev webpack-dev-server / cnpm install --save-dev webpack-dev-server

二,配置vue.config.js文件

由于vue-cli4文件夹和之前有很大的出入 所以要在vue.config.js配置相关参数,增加devServer的配置

devServer: {
 compress: true,
 disableHostCheck: true, //webpack4.0 开启热更新
 }

位置如下图展示

vue 全局封装loading加载教程(全局监听)

三,配置package.json文件

在package.json中的scripts对象添加命令,开启本地服务

"serve": "vue-cli-service serve && webpack-dev-server --open"

位置如下图展示

vue 全局封装loading加载教程(全局监听)

四,重启

最后执行npm run server然后重新进行打包,热更新失效问题解决

以上这篇vue 全局封装loading加载教程(全局监听)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
正则表达式语法
Oct 09 Javascript
jquery随意添加移除html的实现代码
Jun 21 Javascript
JS:window.onload的使用介绍
Nov 13 Javascript
jQuery源码分析之jQuery中的循环技巧详解
Sep 06 Javascript
JavaScript中的比较操作符&gt;、=、
Dec 31 Javascript
SWFObject基本用法实例分析
Jul 20 Javascript
JavaScript+CSS实现仿Mootools竖排弹性动画菜单效果
Oct 14 Javascript
关于JS中match() 和 exec() 返回值和属性的测试
Mar 21 Javascript
BootstrapTable+KnockoutJS自定义T4模板快速生成增删改查页面
Aug 01 Javascript
js 获取范围内的随机数实例代码
Aug 02 Javascript
初识简单却不失优雅的Vue.js
Sep 12 Javascript
在Vue中使用Compass的方法
Mar 02 Javascript
vant组件中 dialog的确认按钮的回调事件操作
Nov 04 #Javascript
Array.filter中如何正确使用Async
Nov 04 #Javascript
JavaScript setTimeout()基本用法有哪些
Nov 04 #Javascript
vant-ui组件调用Dialog弹窗异步关闭操作
Nov 04 #Javascript
通过实例了解Render Props回调地狱解决方案
Nov 04 #Javascript
vant中的toast层级改变操作
Nov 04 #Javascript
vant中的toast轻提示实现代码
Nov 04 #Javascript
You might like
PHP 5昨天隆重推出--PHP 5/Zend Engine 2.0新特性
2006/10/09 PHP
PHP中在数据库中保存Checkbox数据(2)
2006/10/09 PHP
PHP fgetcsv 定义和用法(附windows与linux下兼容问题)
2012/05/29 PHP
Laravel框架实现redis集群的方法分析
2017/09/14 PHP
PHP远程连接oracle数据库操作实现方法图文详解
2019/04/11 PHP
php文件包含的几种方式总结
2019/09/19 PHP
用js实现计算加载页面所用的时间
2010/04/02 Javascript
深入理解JavaScript系列(25):设计模式之单例模式详解
2015/03/03 Javascript
JS的框架Polymer中的dom-if和is属性使用说明
2015/07/29 Javascript
javascript实现input file上传图片预览效果
2015/12/31 Javascript
js中 计算两个日期间的工作日的简单实例
2016/08/08 Javascript
详细讲解JavaScript中的this绑定
2016/10/10 Javascript
js实现定时进度条完成后切换图片
2017/01/04 Javascript
jQuery.Form上传文件操作
2017/02/05 Javascript
原生javascript实现文件异步上传的实例讲解
2017/10/26 Javascript
通过jquery.cookie.js实现记住用户名、密码登录功能
2018/06/20 jQuery
vue使用Element组件时v-for循环里的表单项验证方法
2018/06/28 Javascript
[56:35]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第二局
2016/02/27 DOTA
[01:07:19]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第一场
2018/04/06 DOTA
Python中super的用法实例
2015/05/28 Python
Python字典简介以及用法详解
2016/11/15 Python
Python2实现的图片文本识别功能详解
2018/07/11 Python
Python实现合并excel表格的方法分析
2019/04/13 Python
Python3内置模块之json编解码方法小结【推荐】
2020/12/09 Python
canvas实现俄罗斯方块的方法示例
2018/12/13 HTML / CSS
新加坡鲜花速递/新加坡网上花店:Ferns N Petals
2020/08/29 全球购物
机械工程系毕业生求职信
2013/09/27 职场文书
新闻专业本科生的自我评价分享
2013/11/20 职场文书
优秀民警事迹材料
2014/01/29 职场文书
创业者是否需要商业计划书?
2014/02/07 职场文书
尊师重教演讲稿
2014/09/04 职场文书
城管执法人员个人对照检查材料思想汇报
2014/09/29 职场文书
会计岗位职责范本
2015/04/02 职场文书
黑暗中的舞者观后感
2015/06/18 职场文书
2015年秋学期教研工作总结
2015/10/14 职场文书
MySQL8.0无法启动3534的解决方法
2021/06/03 MySQL