element-ui switch开关组件二次封装,添加loading效果,点击时调用接口后改变状态

news2024/10/7 3:23:58

先看效果:

element-ui中的switch开关无loading属性(在element-plus时加入了),而且点击时开关状态就会切换,这使得在需要调用接口后再改变开关状态变得比较麻烦。

思路:switch开关外包一层div,给div添加click事件,emit给父组件,在父组件里进行开关状态的切换。

开关组件源码:

<template>
  <div class="custom-switch" @click="switchClick">
    <div style="width: fit-content;height: fit-content;" v-loading="loading">
      <el-switch style="position: relative;" v-bind="$attrs"></el-switch>
    </div>
  </div>
</template>

<script>
/**
 * el-switch开关组件二次封装
 * 
 * description:
 * 移除了el-switch的change事件
 * 添加了loading效果
 * 开关的value值交给父组件处理
 */
export default {
  name: 'CustomSwitch',
  props: {
    loading: {
      default: false,
      type: Boolean
    }
  },
  data() {
    return {}
  },
  created() {},
  mounted() {},
  methods: {
    switchClick() {
      // 如果禁用和loading状态,不emit给父组件
      if (this.$attrs.disabled || this.loading) {
        return
      }
      this.$emit('switch-click', this.$attrs.value)
    }
  }
}
</script>
<style lang="scss" scoped>
.custom-switch {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  ::v-deep .el-loading-mask {
    width: 100%;
    height: 100%;
    border-radius: 10px;
    top: 2px;
    .el-loading-spinner {
      position: relative;
      width: 100%;
      height: 100%;
      top: unset;
      margin-top: unset;
      display: flex;
      align-items: center;
      justify-content: center;
      svg {
        width: 20px;
        height: 20px;
      }
    }
  }
}
</style>

父组件:

<template>
    <custom-switch
        v-model="switchValue"
        :loading="switchLoading"
        :active-value="1"
        :inactive-value="0"
        :disabled="switchDisabled"
        @switch-click="switchClick"
    />
</template>
<script>
import CustomSwitch from './custom-switch.vue'

export default {
    components: { CustomSwitch },
    data() {
        return {
            switchValue: 1,
            switchLoading: false,
            switchDisabled: false
        }
    },
    methods: {
        switchClick() {
            this.switchLoading = true
            // 这里就可以调用接口,接口成功后修改值和loading状态
            setTimeout(() => {
                this.switchValue = !this.switchValue ? 1 : 0
                this.switchLoading = false
            }, 2000)
        }
    }
}
</script>

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

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

相关文章

SAP FI/SD的集成-VKOA科目确定

前言 一、组成部分 二、使用步骤 1.VKOA确定收入科目 1.1定义物料科目分配组 1.2定义客户科目分配组 2.V/08定价过程 3. 库存成本Inventory的自动记账科目配置-OBYC 总结 前言 财务和销售集成的点&#xff0c;也是各种SAP顾问经常遇到的面试问题&#xff0c;实际工作中也会经常…

雅思 《九分达人》阅读练习(二)

目录 雅思阅读练习 《九分达人》test3 paragraph3 1.单词含义要记准确&#xff0c;敏感度要上来。 2.找准定位&#xff0c;之后理解句子大致含义。 说说关于判断题的做题方法 关于“承认”有哪些单词 同替词汇 think 可以用什么其他单词来替换 单词 一些疑问 I have…

项目实战:ES的增加数据和查询数据

文章目录 背景在ES中增加数据新建索引删除索引 在ES中查询数据查询数据总数量 项目具体使用&#xff08;实战&#xff09;引入依赖方式一&#xff1a;使用配置类连接对应的es服务器创建配置类编写业务逻辑----根据关键字查询相关的聊天内容在ES中插入数据 总结提升 背景 最近需…

每日一题(设计循环队列)

每日一题&#xff08;设计循环队列&#xff09; 622. 设计循环队列 - 力扣&#xff08;LeetCode&#xff09; 1.题意解读 本题只能为队列开辟k个单位空间&#xff0c;并且只能利用这几个空间进行数据的存储。 思路&#xff1a;本题使用数组来实现队列是比较方便的&#xff0c…

Unity WebView 中文输入支持

WebView 中文输入支持 &#x1f96a;效果展示&#x1f371;原理 &#x1f96a;效果展示 &#x1f4a1;使用版本为4.4&#xff1b; &#x1f4a1;测试环境&#xff1a;unity editor 2022.3.15f1c1、Windows&#xff1b; &#x1f371;原理 提取页面激活的输入框&#xff0c;…

代码随想录第29天 | ● 1005.K次取反后最大化的数组和 ● 134. 加油站 ● 135. 分发糖果

1005.K次取反后最大化的数组和 var largestSumAfterKNegations function(nums, k) {while(k>0){nums.sort((a,b)>a-b);nums[0]-nums[0];k--}return nums.reduce((prev, cur)>prevcur,0) };第一想法 每次换最小的那个数&#xff0c;负数换正数&#xff0c;正数换负数…

python+vue+django九价疫苗预约系统

疫苗预约的效率&#xff0c;取代人工管理是必然趋势。 本九价疫苗预约系统以Django作为框架&#xff0c;B/S模式以及MySql作为后台运行的数据库。本系统主要包括以下功能模块&#xff1a;用户、医生、医院、九价疫苗、疫苗预约、系统管理等模块&#xff0c;通过这些模块的实现能…

三门问题讨论

三门问题讨论 三门问题第一种第二种 三门问题 三门问题&#xff08;Monty Hall problem&#xff09;亦称为蒙提霍尔问题、蒙特霍问题或蒙提霍尔悖论&#xff0c;大致出自美国的电视游戏节目Let’s Make a Deal。问题名字来自该节目的主持人蒙提霍尔&#xff08;Monty Hall&…

二分查找 - 二分答案

第四部分 二分答案 最小值最大(或最大值最小)问题,二分答案区间,配合贪心、DP 等其他算法检验这个答案是否合理,最优化问题转换为 判定性问题。 「二分」的本质是二段性,并非单调性。说白了就是答案在一个区间,二分区间,直到找到最优答案。 TreeSet 的方法: E floor​…

Zstack 安装 黑群晖未找到硬盘:解决方法

错误原因&#xff1a; 发生错误的原因&#xff0c;黑群晖要求硬盘为Sata格式&#xff0c;而默认创建的硬盘格式为Virtio&#xff0c;我们要做的就是修改挂载的虚拟硬盘改为Sata格式 解决方法&#xff1a; 1、进入 ZStack&#xff0c;找到黑群晖的主机&#xff0c;查看 UUID …

BUUCTF刷题十一道(08)

文章目录 [HITCON 2017]SSRFme[b01lers2020]Welcome to Earth[CISCN2019 总决赛 Day2 Web1]Easyweb[SWPUCTF 2018]SimplePHP[NCTF2019]SQLi[网鼎杯 2018]Comment[NPUCTF2020]ezinclude[HarekazeCTF2019]encode_and_encode[CISCN2019 华东南赛区]Double Secret[网鼎杯2018]Unfin…

离谱至极!“核弹显卡”?!!

ProgrammeLL&#xff0c;启动&#xff01; 背景 2011年&#xff0c;英伟达发布了GTX590显卡&#xff0c;由于发热和功耗大&#xff0c;发生过多起因超频而电容爆炸事件。 介绍表 芯片厂商NVIDIA显卡芯片Ge Force GTX 590核心代号GF110核心频率607MHzCUDA核心512个显存频率341…

多线程快速入门

线程与进程区别 每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。线程是一组指令的集合&#xff0c;或者是程序的特殊段&#xff0c;它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程&#xff0c;它负责在单个程序里…

计算机编程中的编码是什么?

编码是信息从一种形式或格式转换为另一种形式的过程&#xff0c;也称为计算机编程语言的代码&#xff0c;简称编码。用预先规定的方法将文字、数字或其它对象编成数码&#xff0c;或将信息、数据转换成规定的电脉冲信号。编码在电子计算机、电视、遥控和通讯等方面广泛使用。编…

YOLOv8 快速入门

前言 本文是 YOLOv8 入门指南&#xff08;大佬请绕过&#xff09;&#xff0c;将会详细讲解安装&#xff0c;配置&#xff0c;训练&#xff0c;验证&#xff0c;预测等过程 YOLOv8 官网&#xff1a;ultralytics/ultralytics: NEW - YOLOv8 &#x1f680; in PyTorch > ONN…

异步编程 - 12 异步、基于事件驱动的网络编程框架 Netty

文章目录 Netty概述Netty中的一些概念Netty的线程模型Netty Server端Netty Netty 端 TCP半包与粘包问题基于Netty与CompletableFuture实现RPC异步调用 Netty概述 Netty是一个异步、基于事件驱动的网络应用程序框架&#xff0c;其对Java NIO进行了封装&#xff0c;大大简化了TC…

Milvus Cloud扩展变更:为向量数据库注入前沿增强功能

在向量数据库的不断变化中,Milvus Cloud已成为一个改变游戏规则的先锋,革新了我们存储、搜索和分析复杂向量数据的方式。通过最新版本的Milvus Cloud2.3.0,引入了一系列重要的增强和修改,为更强大、更高效的向量数据库解决方案铺平了道路。在本文中,我们将深入探讨Milvus …

自然语言处理-词向量模型-Word2Vec

通常数据的维度越高&#xff0c;能提供的信息也就越多&#xff0c;从而计算结果的可靠性就更值得信赖 如何来描述语言的特征呢&#xff0c;通常都在词的层面上构建特征&#xff0c;Word2Vec就是要把词转换成向量 假设现在已经拿到一份训练好的词向量&#xff0c;其中每一个词都…

Layui自定义列表多选

需求&#xff1a;已回访不需要分配&#xff0c;未回访的可多选分配 效果图&#xff1a; 实现方式 1&#xff0c;自定义复选 2&#xff0c;已回访的框去掉 3&#xff0c;自己写全选方法 注意&#xff1a;要想进方法一定要写lay-filter&#xff0c;才能触发方法&#xff0…

盘点使用代理IP时常会遇到的HTTP代理错误代码

如今&#xff0c;随着全球化的深入发展&#xff0c;越来越多的企业开始向海外拓展业务。跨境电商、海外营销等业务的兴起&#xff0c;使人们对HTTP代理的需求量越来越大。然而&#xff0c;在使用HTTP代理的过程中&#xff0c;常常会遇到各种错误代码&#xff0c;这些错误代码产…