h5页面loading丝滑小妙招,vue+vant

2023-11-18

1.v-if

使用v-if="tag== 1",在data声明一个变量tag=0,请求到参数后tag=1,我会在created重新初始化tag=0,为了保险我还会加一个setTimeout定时器

    <div class="main" v-if="mainShow == 1">
    </div>

data(){
    return{
        tag:0
    }
}
created(){
    this.tag=0
    this.getDeparDirectory(id);
}
methods: {
    // 获取科室目录
    getDeparDirectory(params) {
      // this.$loading.show();;
      getDeparDirectory({ id: params })
        .then((res) => {
          if (res.code == 200) {
            this.items = res.data.departmentList.map((item) => {
              return {
                text: item.name,
                id: item.id,
              };
            });
            console.log('this.items', this.items);
            // this.defaultDirectoryId=this.items[0].id
            this.getDepartmentList(this.items[0].id);
            setTimeout(() => {
              this.mainShow = 1;
            }, 100);
            // this.$loading.hide();;
          }
        })
        .catch((err) => {
          // console.log(err);
        });
    },
    
}

2.v-show

与上同理

3.使用keep-alive

比如进入下一页本页数据不需要太大变化的可在本页router添加keepAlive:true属性

假如只想让他进入下一页返回才保存状态使用如下代码

  activated() {},
  // 只允许去packageDetails回来才能保存状态
  beforeRouteLeave(to, from, next) {
    if (to.path == '/departmentdetails') {
      from.meta.keepAlive = true;
    } else {
      let vnode = this.$vnode;
      let parentVnode = vnode && vnode.parent;
      if (
        parentVnode &&
        parentVnode.componentInstance &&
        parentVnode.componentInstance.cache
      ) {
        var key =
          vnode.key == null
            ? vnode.componentOptions.Ctor.cid +
              (vnode.componentOptions.tag
                ? `::${vnode.componentOptions.tag}`
                : '')
            : vnode.key;
        var cache = parentVnode.componentInstance.cache;
        var keys = parentVnode.componentInstance.keys;
        if (cache[key]) {
          this.$destroy();
          // remove key
          if (keys.length) {
            var index = keys.indexOf(key);
            if (index > -1) {
              keys.splice(index, 1);
            }
          }
          cache[key] = null;
        }
      }
    }
    next();
  },

4.在http的请求拦截,和请求响应那里添加全局loading

import {
	Toast
} from 'vant';
import { debounce } from "lodash";

//添加一个开关
const RequestStack = [];
let RequestId = 0; 
const openLoading=()=>{
	Toast.loading({
      message: "加载中",
      duration: 0, // toast不消失
    });
}
const closeLoading=debounce(()=>{
	if (!RequestStack.length) {
		Toast.clear();
	}
},100)

// 请求拦截器
axios.interceptors.request.use(
	config => {
		if (process.env.NODE_ENV === "development") {
			// config.headers['Authorization'] = "Bearer " + "eyJhbGciOiJIUzUxMiJ9.eyJ1c2VyX3R5cGUiOiIwMSIsInVzZXJfaWQiOjE1NDE3MjAzMTY2ODI1NDMxNjUsInVzZXJfbmFtZSI6IuS6keeDn-aIkOmbqCIsInVzZXJfa2V5IjoiY2RkN2IzYjItNTdlZi00MzIzLTg3MmUtM2ExMjlkODZjZmU0IiwiZW50ZXJwcmlzZV9pZCI6MTU0Mjc3ODM2NzAzMjI1NDQ5OSwic291cmNlX25hbWUiOiJzbGF2ZSJ9.Wv0nkCSgWRwXX-15I56_W9CKBG5AwgImJr5eo3K_0ObVTyDO8n9hyks8vcOJztqEO-NoGjHcsdOeAuS-VeSGfw"
			// 本地注释
			let token = window.localStorage.getItem("token")
			config.headers.common['Authorization'] = "Bearer " + token
		}else{
			// 从localStorage拿出token放进请求头里 
			let token = window.localStorage.getItem("token")
			config.headers.common['Authorization'] = "Bearer " + token
		}
		// 开启 Loading
		openLoading()
		RequestStack.push(RequestId++)
		return config
	},
	error => {
		RequestStack.pop();
		closeLoading()
		// Toast.failed('请求过程出错')
		return Promise.error(error)
	})
// 添加响应拦截器
axios.interceptors.response.use((response) => {
	RequestStack.pop();
	closeLoading()
	// 对响应数据做点什么
	return response
}, (error) => {
	RequestStack.pop();
	closeLoading()
	// Toast.failed('响应过程出错')
	return Promise.reject(error)
});

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

h5页面loading丝滑小妙招,vue+vant 的相关文章

随机推荐

  • 关于VUE 配置文件config详解内容

    const path require path module exports 区分打包环境与开发环境 process env NODE ENV production 打包环境 process env NODE ENV development
  • 【知识蒸馏】知识蒸馏(Knowledge Distillation)技术详解

    参考论文 Knowledge Distillation A Survey 1 前言 近年来 深度学习在学术界和工业界取得了巨大的成功 根本原因在于其可拓展性和编码大规模数据的能力 但是 深度学习的主要挑战在于 受限制于资源容量 深度神经模型
  • C++ 使用海康威视SDK将视频推流到rtmp服务器

    研究FFmpeg有两三年了 一直没写过这方面的文章 今天记一下 由于工作关系 需要将化工企业内部的视频发布到一个部署在公网的视频服务器 然后由相关人员浏览 由于是化工企业 企业严禁外部的机器直接访问视频网络 最多提供一个跳板机 因此 两年多
  • 干洗店小程序,洗鞋店小程序,互联网洗鞋店,企业干洗方案,干洗行业小程序,上门取衣小程序,预约干洗小程序,校园干洗店小程序,工厂干洗店小程序,干洗店小程序开发;

    干洗店小程序 洗鞋店小程序 互联网洗鞋店 企业干洗方案 干洗行业小程序 上门取衣小程序 预约干洗小程序 校园干洗店小程序 工厂干洗店小程序 干洗店小程序开发 微信干洗店小程序 一 核心功能介绍 1 支持上门取送 送货到店 寄存网点 智能衣柜
  • oracle9i升级oracle10g

    author skate time 2009 09 11 网上看到一篇oracle9i升级oracle10g的文章 觉得不错 记录下来 你可以参考汪海的文章 http wzwanghai spaces live com 37AFBD116
  • day3作业

    在家目录下创建目录名为 shuren ubuntu ubuntu mkdir shuren 在shuren目录下创建d1 d2 d3 注意d2在d1目录下 d3在d2目录下 ubuntu ubuntu mkdir shuren d1 d2
  • java 数组作为方法参数

    数组作为方法参数 例 定义方法 打印输出数组元素的值 public void printArray int arr 数组明指向数组的第一个的元素 数组作为方法参数的方法调用 数组作为方法参数 当传参的时候 传递的是数组的名字 而在方法中定义
  • React 组件通讯

    目录 1 组件通讯 概念 1 组件的特点 2 知道组件通讯意义 总结 2 组件通讯 props 基本使用 1 传递数据和接收数据的过程 2 函数组件使用 props 3 类组件使用 props 总结 3 组件通讯 props 注意事项 1
  • Mybatis的缓存(实例)

    目录 概念 实例 Mybatis中的一级缓存 清空一级缓存的时机 Mybatis中的二级缓存 总结 gt 项目源码 概念 缓存 存于内存中的临时数据 使用缓存优点 减少和数据库的交互次数 提高执行效率 缓存适用于 经常查询并且不经常改变的
  • GO连接数据库--踩坑(超详细)

    当使用go语言对数据进行连接时需要几部操作 1 数据库侧 需要允许远程连接 具体操作方法详见 本地主机连接阿里云数据库 自建数据库 排雷 秋为春的博客 CSDN博客 2 GO侧 1 需要引入go sql driver驱动 常见的引入方法有两
  • FPGA同步复位和异步复位的区别以及设计处理

    FPGA复位信号的设计处理 同步复位 同步复位 同步复位信号跟触发器的时钟是同步的 只有在时钟的跳变沿到来之后才会生效 对应verilog代码如下 这种写法会被编译器综合成同步复位 always posedge clk begin if r
  • 5-C语言-三子棋

    问题 用C语言实现三子棋 思路 整体思路 1 肯定先出现菜单 之后在判断 是否退出 出现菜单 肯定就会有选择 不同的选择 进入不同的函数 而选择的话 用switch实现分支选择 2 实现基本思路 选择1 进入游戏 选择2退出游戏 其他情况
  • Altium 不同原理图之间的网络标号没有连线的问题 error:Duplicate Net Names

    今天画板子 发现同一个工程下不同原理图之间的相同网络标号导入到PCB文件之后 pin没有连接在一起 很奇怪 重复导入号几次都是同样的结果 后来发现原理图中会报错 error Duplicate Net Names 搜索后发现 随后在Proj
  • vmware磁盘在线扩容后不显示扩容后的空间(无需重启)

    简单粗暴 增加磁盘容量后无法显示增加的空间容量 查看磁盘空间 饶了三圈寻他千百度 我用的是这条命令 分区名称自行对应sda sdb echo 1 gt sys block sda device rescan 通过总线标识刷新 ll sys
  • 找了一堆Python教程自学,为何还是看不进去!那是因为你根本没找对方法

    Python学不进 这个系列我今天就再带着大家梳理一遍 虽然我之前也讲过这系列 因为 有人还是不会啊 我想说的就两个点 第一 学Python以实用性为导向 第二 理解和运用 学Python死记硬背作用不大的 从来没听过哪个程序员是靠背学会编
  • 什么是机器学习

    转载 博文计算机的潜意识之从机器学习谈起 原文请点击链接 https www cnblogs com subconscious p 4107357 html 强烈推荐一篇关于机器学习入门导论的博文 里面的内容非常详实 加上作者的理解和感悟精
  • Windows7上安装pytorch1.11后报api-ms-win-core-path-l1-1-0.dll错误的解决方法

    在Windows7上通过Anaconda安装PyTorch v1 11 0后 执行程序时报如下图所示错误 无法启动此程序 因为计算机中丢失api ms win core path l1 1 0 dll 尝试重新安装该程序以解决此问题 此Wi
  • Java爬虫与Python爬虫有什么区别

    Java爬虫和Python爬虫是两种常见的网络爬虫实现方式 它们在语言特性 开发环境和生态系统等方面存在一些区别 1 语言特性 Java是一种面向对象的编程语言 而Python是一种脚本语言 Java较为严谨 需要明确定义类 方法和变量 而
  • MDT 2013 从入门到精通之软件自动化部署设置

    因为工作时间原因已经很长一段时间没有更新博客 还请大伙见谅哈 有关MDT系列文章也是很久没有更新了 今天就来谈谈一些常规技巧内容 我们在日常使用MDT部署过程中 很多新手总是纠结于软件的安装问题 总是通过SkipApplications N
  • h5页面loading丝滑小妙招,vue+vant

    1 v if 使用v if tag 1 在data声明一个变量tag 0 请求到参数后tag 1 我会在created重新初始化tag 0 为了保险我还会加一个setTimeout定时器 div class main div data re