首页 > 其他分享 >自定义组件 v-loading

自定义组件 v-loading

时间:2022-10-12 16:44:25浏览次数:39  
标签:el loading const 自定义 binding import 组件 container

通过指令方式

<template>
  <div class="loading-container">
    <icon-sync class="icon" spin />
  </div>
</template>

<script lang="ts" setup>
  import { IconSync } from '@arco-design/web-vue/es/icon'
</script>

<style lang="less" scoped>
  .loading-container {
    position: absolute;
    top: 0;
    left: 0;
    z-index: 10;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    background-color: rgba(255, 255, 255, 0.6);

    .icon {
      color: #409eff;
      font-size: 32px;
    }
  }
</style>

  

import { DirectiveBinding, createApp } from 'vue'
import Loading from './index.vue'

const toggle = (value: boolean, el: any) => {
  if (value) {
    el.appendChild(el.instance.$el)
  } else {
    const container = el.querySelector('.loading-container')
    if (container) {
      el.removeChild(container)
    }
  }
}

export default {
  mounted(el: any, binding: DirectiveBinding) {
    const app = createApp(Loading)
    const instance = app.mount(document.createElement('div'))
    el.instance = instance
    el.style.position = 'relative'
    toggle(binding.value, el)

  },
  updated(el: HTMLElement, binding: DirectiveBinding) {
    console.log(binding.value)
    toggle(binding.value, el)
  }
}

组件包裹的方式

<template>
  <a-spin :loading="loading" style="display: inherit">
    <slot></slot>
  </a-spin>
</template>

<script lang="tsx" setup>
  import { computed } from 'vue'
  import { loadingStore } from '@/store/modules/loading'

  const storeLoading = loadingStore() as any
  const props = defineProps({
    loadingName: {
      type: String
    }
  })

  const loading = computed(() => {
    const name = props.loadingName || 'loading'
    return storeLoading.$state[name]
  })
</script>

  

 

标签:el,loading,const,自定义,binding,import,组件,container
From: https://www.cnblogs.com/ruose/p/16785014.html

相关文章

  • 【chainer速成】chainer图像分类从模型自定义到测试
    文章首发于微信公众号《有三AI》​​【chainer速成】chainer图像分类从模型自定义到测试​​欢迎来到专栏《2小时玩转开源框架系列》,这是我们第八篇,前面已经说过了caffe,tens......
  • 【MatConvnet速成】MatConvnet图像分类从模型自定义到测试
    欢迎来到专栏《2小时玩转开源框架系列》,这是我们第10篇,前面已经说过了caffe,tensorflow,pytorch,mxnet,keras,paddlepaddle,cntk,chainer,deeplearning4j。今天说MatConvnet,本文所用......
  • vue组件通信方式有哪些?
    vue组件通信方式一、props(父向子传值----自定义属性)/$emit(子向父传值-----自定义事件)父组件通过props的方式向子组件传递数据,而通过$emit子组件可以向父组件通信......
  • 02_四大应用组件之Activity
    02_四大应用组件之Activity1.理论概述1.1Activity的理解Servlet的回顾理解狭义:Servlet是一个interface,我们的Servlet类都必须是此接口的实现类广义:Servlet是一......
  • 【DL4J速成】Deeplearning4j图像分类从模型自定义到测试
    文章首发于微信公众号《有三AI》​欢迎来到专栏《2小时玩转开源框架系列》,这是我们第九篇,前面已经说过了caffe,tensorflow,pytorch,mxnet,keras,paddlepaddle,cntk,chainer。今天说......
  • BAPI_NETWORK_COMP_REMOVE 物料组件删除
     物料组件删除BAPI:BAPI_NETWORK_COMP_REMOVE首先调用BAPI_NETWORK_COMP_GETDETAIL获取明细,得到物料组件唯一编号:component​​​​​​只需要将物料组件......
  • ModStartBlog v5.9.0 新增组件特性,基础布局优化
    系统介绍ModStart是一个基于Laravel模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。系统完全开源,基于Apache2.......
  • 1.1.NIO-三大组件
    1、NIO基础non-blockingio非阻塞io1.1、三大组件1.1.1、Channel&Bufferchannel类似于stream,它就是读写数据的双向通道,可以从channel将数据读入buffer,也可以将buffer......
  • Jchardet——支持检测并输出文件编码方式的组件
    Jchardet——支持检测并输出文件编码方式的组件​简介​Jchardet是OpenAtomOpenHarmony(以下简称“OpenHarmony”)系统的一款检测文本编码的组件。当上传一个文件时,组件可以......
  • 关于ATL组件网页调用
    一、控件只构造不初始化原因:说明网页已经加载了组件,但自身实现可能不完整,使用下面的方案3解决了问题 解决方案1:BEGIN_PROP_MAP(CYQFrame) PROP_DATA_ENTRY("_cx",......