VUE3:自定义loading指令

一、效果描述

在一个div中使用该指令并绑定一个变量,通过修改变量实现Loading的显示与隐藏。

二、代码与使用方式

1.使用指令的vue组件

<template><div  v-loading="showLoading"></div>
</template>
<script setup lang="ts">
import axios from "axios";
import { onMounted, ref } from "vue";
import { vLoading } from "../components/loadings/loding";
const showLoading = ref(false);
const getData = () => {showLoading.value = true;axios.get("接口地址").then((res) => {showLoading.value = false;});
};
onMounted(() => {getGongneng();
});

2.TS文件

import { createApp } from "vue";//含有loding样式的组件
import loadingOne from "./loadingOne.vue";//存储每个元素的loading状态
const map = new WeakMap();const createAndShowLoadingAnimation = (container: HTMLElement) => {const loadingDivInstance = createApp(loadingOne);loadingDivInstance.mount(container);container.style.display = "block";
};const hideLoadingAnimation = (container: HTMLElement) => {container.style.display = "none";
};//自定义指令
export const vLoading = {mounted(el: HTMLElement, binding: any) {//创建一个div容器并添加到使用指令的元素中const loadingDivContainer = document.createElement("div");loadingDivContainer.className = "loading-container";loadingDivContainer.style.display = "none";loadingDivContainer.style.margin = "0 auto";loadingDivContainer.style.marginTop = "100px";el.appendChild(loadingDivContainer);//根据传入的值决定是否显示loading动画if (binding.value) {createAndShowLoadingAnimation(loadingDivContainer);}//将元素和loading状态存储到map中map.set(el, { loadingDivContainer, value: binding.value });},updated(el: HTMLElement, binding: any) {//获取元素的loading状态const { loadingDivContainer, value: oldValue } = map.get(el) || {};//如果传入的值和之前的值不一样,则更新loading状态if (binding.value !== oldValue) {if (binding.value) {createAndShowLoadingAnimation(loadingDivContainer);} else {hideLoadingAnimation(loadingDivContainer);}map.set(el, { loadingDivContainer, value: binding.value });}},unmounted(el: HTMLElement) {const { loadingDivContainer } = map.get(el) || {};if (loadingDivContainer) {hideLoadingAnimation(loadingDivContainer);map.delete(el);}},
};

3.自定义一个loading样式

<template><div id="load"><div class="loader loader--style1" title="0"><svgversion="1.1"id="loader-1"xmlns="http://www.w3.org/2000/svg"xmlns:xlink="http://www.w3.org/1999/xlink"x="0px"y="0px"width="100px"height="100px"viewBox="0 0 40 40"enable-background="new 0 0 40 40"xml:space="preserve"><pathopacity="0.2"fill="#000"d="M20.201,5.169c-8.254,0-14.946,6.692-14.946,14.946c0,8.255,6.692,14.946,14.946,14.946s14.946-6.691,14.946-14.946C35.146,11.861,28.455,5.169,20.201,5.169z M20.201,31.749c-6.425,0-11.634-5.208-11.634-11.634c0-6.425,5.209-11.634,11.634-11.634c6.425,0,11.633,5.209,11.633,11.634C31.834,26.541,26.626,31.749,20.201,31.749z"/><pathfill="#000"d="M26.013,10.047l1.654-2.866c-2.198-1.272-4.743-2.012-7.466-2.012h0v3.312h0C22.32,8.481,24.301,9.057,26.013,10.047z"><animateTransformattributeType="xml"attributeName="transform"type="rotate"from="0 20 20"to="360 20 20"dur="0.5s"repeatCount="indefinite"/></path></svg></div></div>
</template>
<style scoped lang="scss">
.loader {svg path,svg rect {fill: #ff6700;}
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/817141.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

爬虫 selenium

爬虫 selenium 【一】介绍 【1】说明 Selenium是一款广泛应用于Web应用程序测试的自动化测试框架 它可以模拟用户再浏览器上的行为对Web应用进行自动化测试 主要作用&#xff1a; 浏览器控制&#xff1a;启动、切换、关闭不同浏览器元素定位于操作&#xff1a;通过CSS选择器…

vscode中运行js

vscode中运行js 目前vscode插件运行js都是基于node环境&#xff0c;vscode控制台打印有些数据不方便等缺点。 每次调试在浏览器中运行js&#xff0c;需要创建html模板、插入js。期望能够直接运行js可以打开浏览器运行js&#xff0c;在vscode插件市场找到一款插件可以做到。 插…

yolo系列(之一)

深度学习经典检测算法 two-stage (两阶段) : Faster-rcnn Mask-Rcnn系列 &#xff08;输入图像---》CNN特征---》预选框---》输出结果&#xff09; one-stage (单阶段): YOLO系列 &#xff08;输入图像---》CNN特征---》输出结果&#xff09; one-stage的特点&#xff1a;&…

深度学习学习日记4.15 (面向GPT学习)

精确学习时间&#xff08;09点35分开始&#xff09; 深度学习 torch.nntorch.utils.datanumpytorchvision中的模块有哪些os 模块PIL&#xff08;Python Imaging Library&#xff09;tqdmmatplotlibnn.ReLU inplace参数设为Truenn.relu 训练的迭代过程梯度清零loss指标计算为什…

2024 蓝桥打卡Day40

2021、2022年蓝桥杯真题练习 2021年蓝桥杯真题练习A ASCB 卡片C 查找D 货物摆放F 时间显示H 杨辉三角形 2022年蓝桥杯真题练习A 星期计算B 山C 字符统计D 最少刷题数E 求阶乘 2021年蓝桥杯真题练习 A ASC package THL_0412;public class A_2021 {public static void main(Str…

SQLite超详细的编译时选项(十六)

返回&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;SQLite数据库文件格式&#xff08;十五&#xff09; 下一篇&#xff1a;SQLite 在Android安装与定制方案&#xff08;十七&#xff09; 1. 概述 对于大多数目的&#xff0c;SQLite可以使用默认的 编译选项。但是…

WinForms 零基础进阶教程:文件操作与 CSV 处理

文章目录 文件操作数据存储与文件操作文件存取的好处文件存取的方式文本文件的写入和读取文本文件的删除、复制和移动 目录的操作文件属性操作文件路径 对话框OpenFileDialog对话框SaveFileDialog对话框对话框中CheckPathExists属性的应用 CSV 文件读写与 DataGridView 进阶Dat…

Python基于Django的微博热搜、微博舆论可视化系统

博主介绍&#xff1a;✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3…

Redis限流插件

Redis限流插件: 1:搭建层级结构 同时对 redis.log 授权 chmod 777 redis.log2:确认 redis 版本 3:下载redis配置文件 redis.conf https://redis.io/docs/management/config/ 4:上传/redis/conf作为原始 redis.conf 5:在/redis_6390/conf下编辑redis.conf docker run -it \ --…

美国有哪些银行可以开?美国华美银行开户

很多客户在注册香港公司后&#xff0c;都会选择美国的银行开户&#xff0c;因为目前较好开&#xff0c;简单&#xff0c;快速&#xff0c;便宜&#xff0c;性价比较高的银行 。 华美银行现为全美以华裔为主要市场规模较大的商业银行&#xff0c;总部位于加州&#xff0c;专注于…

营销自动化的未来趋势

​营销自动化在2024年的趋势将继续沿着数字化、个性化和智能化的方向发展。 根据小编全网搜索相关资料信息整理得出&#xff0c;营销自动化有以下可能趋势&#xff1a; 1、深度智能化&#xff1a;随着人工智能技术的进一步发展&#xff0c;营销自动化将更加智能化。通过机器学…

51单片机上面的IIC协议

1、什么是IIC协议 2、模拟IIC协议 51单片机上面是没有与IIC协议相关的寄存器的&#xff08;没有相关的硬件&#xff09;&#xff0c;不像串口可以配置对应的寄存器达到目的&#xff08;比如修改波特率9600 or 115200&#xff09;&#xff0c;要配置IIC只能够根据用户手册里面的…

​面试经典150题——LRU 缓存

​ 1. 题目描述 2. 题目分析与解析 首先讲解一下LRU LRU 是“Least Recently Used”的缩写&#xff0c;LRU 算法的基本思想是跟踪最近最少使用的数据&#xff0c;并在缓存已满且需要存储新数据时优先驱逐该数据。 LRU 算法通常的工作原理的简化解释&#xff1a; 当访问或使…

第十五届蓝桥杯python组

第十五届蓝桥杯Python组的比赛涉及了多个编程问题&#xff0c;这些问题覆盖了不同的算法和数据结构知识点。以下是一些题目的描述和解题思路&#xff1a; A题“穿越时空之门”要求计算在二进制和四进制表示下&#xff0c;数字的各数位之和相等的勇者数量。解题的关键是将数字转…

vue.config.js跨域问题解决

讲解视频 问题背景 目标地址&#xff1a; 而当前项目启动是http&#xff0c;协议名不同&#xff0c;所以跨域了 解决步骤和解答 1. 新建vue.config.js文件 2. 添加如下代码&#xff1a; 一般目标路径target写 域名 就可以了 但其实&#xff0c;写路径也可以&#xff0c;…

查看 Linux 接入的 USB 设备速率是 USB2 还是 USB3

查看接入 usb 设备的速率 使用以下命令查看接入的 USB 设备速率&#xff08;每一行最后的 xxM 字样&#xff09;。插入设备前查看一次&#xff0c;插入设备后查看一次&#xff0c;对比即可定位到刚插入的设备是哪一条。 lsusb -t命令输出如下图 对照 USB 速率表 对照 USB 速…

EasyRecovery数据恢复软件2024试用版下载安装包

EasyRecovery支持的文件格式非常广泛&#xff0c;几乎涵盖了用户日常所需的所有文件类型。具体来说&#xff0c;它支持恢复的办公文档类型包括Microsoft Word、Excel、PPT、MS office、Adobe PDF、Access等。此外&#xff0c;对于音频文件&#xff0c;EasyRecovery同样支持丰富…

基于matlab的PPG与ECG心率计算

% 清除工作空间变量,关闭所有图形界面 clear; close all;% 读取数据 [a, b] = xlsread(s10_walk.xlsx);% 采样频率 fs = 500;% 选择PPG信号和ECG信号 PPG = a(:, 2); ECG = a(:, end);% 创建时间轴 t = (1:length(PPG)) / fs;% 绘制PPG和ECG的时域图 figure subplot(2,1,1) pl…

初识three.js创建第一个threejs3D页面

说到3D&#xff0c;想必大家都能想到three.js&#xff0c;它是由WebGL封装出来的&#xff0c;接下来&#xff0c;我手把手教大家创建一个简单的3D页面 话尽在代码中&#xff0c;哈哈 大家可以复制代码玩一下 <!DOCTYPE html> <html lang"en"><head&…

【Spring高级】Springboot自动配置类原理

目录 如何引入第三方库第三方库与当前项目Bean重复自定义自动配置类 自动配置类通常位于Spring Boot的自动配置模块中&#xff0c;并且被标记为 Configuration类。这些类使用 Conditional注解来检查某些条件是否满足&#xff0c;如果满足&#xff0c;则创建和配置相关的bean。…