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 相关文章推荐
为radio类型的INPUT添加客户端脚本(附加实现JS来禁用onClick事件思路代码)
Nov 11 Javascript
JQuery操作Select的Options的Bug(IE8兼容性视图模式)
Apr 21 Javascript
JQuery弹出炫丽对话框的同时让背景变灰色
May 22 Javascript
jQuery队列操作方法实例
Jun 11 Javascript
详细解读JavaScript的跨浏览器事件处理
Aug 12 Javascript
JS实现浏览器状态栏显示时间的方法
Oct 27 Javascript
vue.js表格分页示例
Oct 18 Javascript
jQuery实现的省市联动菜单功能示例【测试可用】
Jan 13 Javascript
用原生JS实现简单的多选框功能
Jun 12 Javascript
jquery 输入框查找关键字并提亮颜色的实例代码
Jan 23 jQuery
uni-app从安装到卸载的入门教程
May 15 Javascript
使用vue-element-admin框架从后端动态获取菜单功能的实现
Apr 29 Vue.js
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
URL Rewrite的设置方法
2007/01/02 PHP
snoopy PHP版的网络客户端提供本地下载
2008/04/15 PHP
PHP程序61条面向对象分析设计的经验小结
2008/11/12 PHP
php中debug_backtrace、debug_print_backtrace和匿名函数用法实例
2014/12/01 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
2016/04/07 PHP
一个简单的php路由类
2016/05/29 PHP
MC Dialog js弹出层 完美兼容多浏览器(5.6更新)
2010/05/06 Javascript
Javascript写入txt和读取txt文件示例
2014/02/12 Javascript
JS 打印界面的CSS居中代码适用所有浏览器
2014/03/19 Javascript
用jquery修复在iframe下的页面锚点失效问题
2014/08/22 Javascript
jquery取子节点及当前节点属性值的方法
2014/09/09 Javascript
JavaScript获取各大浏览器信息图示
2015/11/20 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
2016/02/03 Javascript
JQuery遍历元素的父辈和祖先的方法
2016/09/18 Javascript
vue scroller返回页面记住滚动位置的实例代码
2018/01/29 Javascript
javascript 使用sleep函数的常见方法详解
2020/04/26 Javascript
小程序点餐界面添加购物车左右摆动动画
2020/09/23 Javascript
Vite和Vue CLI的优劣
2021/01/30 Vue.js
easy_install python包安装管理工具介绍
2013/02/10 Python
python根据出生日期获得年龄的方法
2015/03/31 Python
python实现根据用户输入从电影网站获取影片信息的方法
2015/04/07 Python
Python2.x中文乱码问题解决方法
2015/06/02 Python
python获取mp3文件信息的方法
2015/06/15 Python
python 添加用户设置密码并发邮件给root用户
2016/07/25 Python
python 获取字符串MD5值方法
2018/05/29 Python
django 微信网页授权登陆的实现
2019/07/30 Python
Python pygame绘制文字制作滚动文字过程解析
2019/12/12 Python
python 实现围棋游戏(纯tkinter gui)
2020/11/13 Python
3D动画《斗罗大陆》上线当日播放过亿
2021/03/16 国漫
详解HTML5常用的语义化标签
2019/09/27 HTML / CSS
迪梵英国官方网站:Darphin英国
2017/12/06 全球购物
PyQt QMainWindow的使用示例
2021/03/24 Python
八年级音乐教学反思
2014/01/09 职场文书
大一军训感言
2014/01/09 职场文书
导游词之湖北武当山
2019/09/23 职场文书
MATLAB 全景图切割及盒图显示的实现步骤
2021/05/14 Python