vue vue3 手写 动态加载组件

效果展示

一、需求背景:

# vue3 项目涉及很多图表加载、表格加载 #考虑手写一个动态加载组件

二、实现思路

通过一个加载状态变量,通过v-if判断,加载状态的变量等于哪一个,动态加载组件内部就显示的哪一块组件。

三、实现效果

四、代码

(一)、封装组件

<template>
  <view class="loadding_contaniers" v-if="loadState == 1">
    <view class="loading_img">
      <image src="@/static/images/smartCabin/loadingImg/isLoading_bg.png" />
    </view>
    <view class="imgTitle">加载中<text id="dot">...</text></view>
  </view>
  <view class="loadding_contaniers" v-else-if="loadState == 2">
    <view class="loading_img">
      <image src="@/static/images/smartCabin/loadingImg/isErr_bg.png" />
    </view>
    <view class="imgTitle">请求失败,请重新加载!</view>
  </view>
  <view class="loadding_contaniers" v-else-if="loadState == 3">
    <view class="loading_img">
      <image src="@/static/images/smartCabin/loadingImg/isNone_bg.png" />
      <!-- <image
        :src="
          getAssetsFile(
            props.noticeTip == '暂无数据'
              ? `smartCabin/loadingImg/isNone_bg.png`
              : `smartCabin/loadingImg/isErr_bg2.png`
          )
        "
      /> -->
    </view>
    <view class="imgTitle">{{ noticeTip }}</view>
  </view>
  <view class="loadding_sucess" v-else>
    <slot> </slot>
  </view>
</template>

<script>
export default {
  props: {
    // 1:加载中 2:加载失败 3:暂无数据 4:加载成功
    loadState: Number,
    noticeTip: {
      type: String,
      default: "暂无数据",
    },
  },
};
</script>

<style lang="scss">
.loadding_contaniers {
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  .loading_img {
    image {
      width: 260rpx;
      height: 260rpx;
    }
  }
  .imgTitle {
    flex: 1;
    height: 0;
    color: #757575;
    #dot {
      display: inline-block;
      width: 1.5em;
      vertical-align: bottom;
      overflow: hidden;
      animation: dotting 0.5s infinite step-start;
    }
    @keyframes dotting {
      0% {
        width: 0;
        margin-right: 1.5em;
      }
      33% {
        width: 0.5em;
        margin-right: 1em;
      }
      66% {
        width: 1em;
        margin-right: 0.5em;
      }
      100% {
        width: 1.5em;
        margin-right: 0;
      }
    }
  }
}
.loadding_sucess {
  width: 100%;
  height: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
}
</style>

 (二)、组件传参

h5使用

<LoaddING :loadState="4" :noticeTip="'当loadState是成功的时候'">
   <view class="myContent">
      <image
        src="@/static/images/energy/elePower/receiving_power.png"
      />
   </view>
</LoaddING>

web端使用 

<LoaddING :loadState="data.isFinish" :noticeTip="data.isTips">
              <!-- 插槽组件 -->
              <ewClickLine
                :yAxisUnit="echartData2.unit"
                :seriesColor="echartData2.color"
                :legend="{ show: true, x: '80%' }"
                :seriesName="echartData2.name"
                :seriesType="echartData2.chartSeriesType"
                :xAxisValue="echartData2.lineXAxisValue"
                :nums="echartData2.lineNums"
              ></ewClickLine>
</LoaddING>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Coursera上托福专项课程03:TOEFL Test-Taking Strategies 学习笔记(完结)

TOEFL Preparation Specialization Specialization Certificate TOEFL Test-Taking Strategies Course Certificate 本文是学习 TOEFL Test-Taking Strategies 这门课的学习笔记&#xff0c;如有侵权&#xff0c;请联系删除。 文章目录 TOEFL Preparation SpecializationTOEF…

《web应用技术》第二次课后练习

练习目的&#xff1a; 1、form表单值的获取 2、mysql数据库及表的建立&#xff08;参见视频&#xff09; 3、maven项目的建立&#xff08;参见视频&#xff09; 4、使用jdbc进行数据库的增删改查操作。&#xff08;参见源代码&#xff09; 具体如下&#xff1a; 1、继续理…

以Kotti项目为例使用pytest测试项目

在维护和构建大型项目时&#xff0c;单独一个一个手工测试代码已经不适用了&#xff0c;这时候就要用专门的测试框架进行测试。让我们以Kotti项目为例&#xff0c;用pytest这个测试框架进行实践测试吧。 使用python3.10 Ubuntu 系统 准备工作 下载和安装kotti库 pip install…

并查集python实现及题目练习

文章目录 1. 并查集概念1.1 理解并查集&#xff1a;简介与应用场景1.2 Python 实现并查集及优化策略1.3 扁平化栈实现1.4 分析并查集的时间复杂度 2. 情侣牵手3. 相似字符串4. 岛屿数量 如果想了解并查集基础推荐去看左程云大神的算法讲解&#xff0c;非常不错&#xff0c;b站和…

【一】学习TDengine-总结新技术学习的思考

学习TDengine-总结新技术学习的思考 概要 因业务场景需要我们开始接触时序数据库&#xff0c;于是开始根据以往的学习经验着手熟悉这一项新技术&#xff0c;学习也是一种技能&#xff0c;成功的人越容易成功&#xff0c;因为他们掌握了一套成功的方法&#xff0c;这里提到学习经…

【LeetCode热题100】74. 搜索二维矩阵(二分)

一.题目要求 给你一个满足下述两条属性的 m x n 整数矩阵&#xff1a; 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target &#xff0c;如果 target 在矩阵中&#xff0c;返回 true &#xff1b;否则&#xff0c;…

清明寄哀思,VR云祭扫沉浸式缅怀先烈

只要拿出手机扫一扫&#xff0c;就能通过VR全景&#xff0c;沉浸式走进烈士陵园、纪念场馆&#xff0c;随场景进行同步参观&#xff0c;进行“云祭扫”。这种“云祭扫”活动一经推出就受到了广大群众的追捧&#xff0c;VR全景云祭扫以一种全新、绿色、安全的理念&#xff0c;通…

别让.[[hashtreep@waifu.club]].svh勒索病毒盯上你:一份实用的科普与防范经验

引言&#xff1a; 在数字化浪潮席卷全球的今天&#xff0c;我们享受着信息技术带来的便捷与高效。然而&#xff0c;随着我们对网络的依赖越来越深&#xff0c;网络安全问题也日益凸显。其中&#xff0c;.[[hashtreepwaifu.club]].svh勒索病毒就是一种让人闻之色变的网络威胁。它…

Mac安装Docker提示Another application changed your Desktop configuration解决方案

1. 问题描述 Mac安装Docker后&#xff0c;提示Another application changed your Desktop configuration&#xff0c;Re-apply configurations无效 2. 解决方案 在终端执行下述命令即可解决&#xff1a; sudo ln -sf /Applications/Docker.app/Contents/Resources/bin/docke…

2024/4/1—力扣—两数相除

代码实现&#xff1a; 思路&#xff1a;用减法模拟除法 // 用减法模拟除法 int func(int a, int b) { // a、b均为负数int ans 0;while (a < b) { // a的绝对值大于等于b&#xff0c;表示此时a够减int t b;int count 1; // 用来计数被减的次数// t > INT_MIN / 2:防止…

Tire树

Trie 树是一种多叉树的结构&#xff0c;每个节点保存一个字符&#xff0c;一条路径表示一个字符串。 Trie字符串统计 维护一个字符串集合&#xff0c;支持两种操作&#xff1a; I x 向集合中插入一个字符串 x&#xff1b;Q x 询问一个字符串在集合中出现了多少次。 共有 N 个…

突破外贸挑战:推荐几款优秀的CRM软件,解析解决方案

外贸企业面临的困境愈演愈烈&#xff0c;他们不仅面临着外部竞争对手以及市场的挑战&#xff0c;内部还面临着资金和管理难题的挤压。墨守成规&#xff0c;还按照之前单一的管理运营模式&#xff0c;迟早会被市场淘汰。 现在的市场趋势是企业要逐步走向精细化管理&#xff0c;将…

蓝牙学习十(扫描)

一、简介 从之前的文章中我们知道&#xff0c;蓝牙GAP层定义了四种角色&#xff0c;广播者&#xff08;Broadcaster&#xff09;、观察者&#xff08;Observer&#xff09;、外围设备&#xff08;Peripheral&#xff09;、中央设备&#xff08;Central&#xff09;。 之前的学习…

华为ICT七力助推文化产业新质生产力发展

创新起主导作用的新质生产力由新劳动者、新劳动对象、新劳动工具、新基础设施等四大要素共同构成&#xff0c;符合新发展理念的先进生产力质态&#xff1b;具有高科技、高能效、高质量等三大突出特征。而通过壮大新产业、打造新模式、激发新动能&#xff0c;新质生产力能够摆脱…

JMeter源码解读 - HashTree(超详细)

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 在 JMeter 中&#xff0c;HashTree 是一种用于组织和管理测试计…

网络安全意识也是基础防御中的关键一环

在当今数字化时代&#xff0c;网络安全已经成为企业和个人生活中不可或缺的一部分。网络攻击的不断演进和加剧使得保护个人隐私、商业机密和国家安全变得尤为重要。然而&#xff0c;网络安全并非仅仅是技术层面的问题&#xff0c;更是一个综合性的挑战&#xff0c;需要广泛的参…

场景文本检测识别学习 day01(传统OCR的流程、常见的损失函数)

传统OCR的流程 传统OCR&#xff1a;传统光学字符识别常见的的模型主要包括以下几个步骤来识别文本 预处理&#xff1a;预处理是指对输入的图像进行处理&#xff0c;以提高文字识别的准确率。这可能包括调整图像大小、转换为灰度图像、二值化&#xff08;将图像转换为黑白两色&…

Android视角看鸿蒙第十一课-鸿蒙的布局之层叠布局Stack

Android视角看鸿蒙第十一课-鸿蒙的布局之层叠布局 导读 在Android中我个人认为&#xff0c;最离不开的就是LinearLayout和FrameLayout了&#xff0c;RelativeLayout我都基本不用的。 所以我把层叠布局排在了第二位。 官方描述 如何定义层叠布局 Stack组件为容器组件&#x…

瑞登梅尔邀您参观2024第13届生物发酵展精彩不容错过

参展企业介绍 我们&#xff0c;瑞登梅尔(上海)纤维贸易有限公司 致力于研究、开发和生产以植物为原料的高品质有机纤维。我们让这些有价值的天然物质的许多特性&#xff0c;能够广泛应用于现代工业的各个领域。 JRS的纤维产品是由天然的、可再生的原料制成。例如&#xff1a;…

泛微OA 自定义多选浏览框

1、建模引擎-》应用建模-》表单 2、建模引擎-》应用建模-》模块 3、建模引擎-》应用建模-》查询 4、把查询页面挂到前端页面。 效果展示&#xff1a; 5、建模引擎-》应用建模-》浏览框 6、流程表单中字段应用