首页 > 其他分享 >varlet库loading组件模版使用转函数式调用方法

varlet库loading组件模版使用转函数式调用方法

时间:2024-05-08 10:56:11浏览次数:15  
标签:loading varlet 模版 instance 调用 import const

2024年5月8日10:34:19

varlet库loading组件模版使用转函数式调用方法

鉴于在H5中varlet.Snackbar在axios请求封装函数中总是会产生阻塞现象问题,而varlet.loading又不能函数式调用。

// loading.vue
<script lang="ts" setup>
import { ref, onMounted } from 'vue'
import { useWindowSize } from '@vueuse/core'
import { omit } from 'lodash-es'
import type { LoadingProps } from '@varlet/ui/types/loading'

type customPropType = {
  init: Function
}

const { height } = useWindowSize()
const props = defineProps<LoadingProps & customPropType>()
const loading = ref<boolean>(false)

onMounted(() => {
  props?.init(instance)
})

function start() {
  loading.value = true
}

function finish() {
  loading.value = false
}

const instance = {
  start,
  finish
}

defineExpose(instance)
</script>

<template>
  <var-overlay :show="loading">
    <div class="w-screen flex flex-col justify-center items-center" :style="{ height: height + 'px' }">
      <var-loading v-bind="{ ...omit(props, ['loading']) }" :loading="loading"></var-loading>
    </div>
  </var-overlay>
</template>

<style lang="scss" scoped></style>
// loading.ts
import { render, h } from "vue";
import Loading from "./loading.vue";
import type { LoadingProps } from '@varlet/ui/types/loading'

export const RenderLoading = (options: LoadingProps) => {
  let instance: any
  const divElement = document.createElement('div')
  rendering(divElement)
  document.body.appendChild(divElement)

  function renderVNode() {
    const vNode = h(Loading, { ...options, init: (i: any) => { instance = i } })
    return vNode
  }

  function rendering(container: Element) {
    render(renderVNode(), container)
  }

  return instance
}

export default RenderLoading

使用方式

// 函数式调用
const load = RenderLoading({ description: 'LOADING' })
load.start()
load.finish()

// 当然也保留了原先模版调用方式

标签:loading,varlet,模版,instance,调用,import,const
From: https://www.cnblogs.com/lastkiss/p/18179219

相关文章

  • 分块=-=优雅的暴力=-=中位数模版
    #include<bits/stdc++.h>//#defineintlonglong#definelllonglong#definefd(i,a,b)for(registerinti=a;i<=b;i=-~i)#definebd(i,a,b)for(registerinti=a;i>=b;i=~-i)usingnamespacestd;constintN=1e5+509,M=509,MOD=10007;intn,siz,id;......
  • yum install报错CentOS-8 - AppStream Errors during downloading metadata for repo
     https://blog.csdn.net/zhangweixbl4/article/details/135699389 意思就是:现在centos8停止维护了其实就是镜像里边的$releasever替换成8-stream如何解决这个问题:进入目录:cd/etc/yum.repos.d备份文件mkdirbakcp*bak/注意:会出现cp:-rnotspecified;omittingdi......
  • verilog 状态机模版
    定义所有状态参数localparamIDLE=3'b000;localparamBOF=3'b001;localparamFIND=3'b010;localparamCHANGE=3'b011;localparamERROR=3'b100;localparamEOF=3'b101;always@(posedgeI_sys_clkor......
  • 【vue3入门】-【17】模版引用
    模版引用虽然Vue的声明性渲染模型抽象了大部分的DOM的直接操作,但在某些情况下,我们仍然需要直接访问底层DOM元素。要实现这一点,我们可以使用特殊的refattribute挂载结束后引用都会被暴露在this.$refs只上,从this.$refs中按照js原生方法获取元素属性或变更元素属性<template>......
  • ETLCloud平台组件模版的使用技巧
    ETL工具介绍在ETLCloud平台中配备了各种不同的组件、模板、规则,用户可运用不同类型的组件来实现想要的业务流程。接下来直接进入平台组件模板的使用技巧说明吧。使用技巧1.组件复制平时在使用的时候,如果遇到要用到一个组件,需要再来个相同组件时,可以通过右键组件复制一个,里面......
  • 如何使用 SFDX CLI 拉取存储在 Public 文件夹的邮件模版(How to retrieve an email tem
    SELECTDeveloperName,FolderName,IsActiveFROMEmailTemplateSELECTDeveloperName,Folder.DeveloperName,IsActiveFROMEmailTemplate使用下面的命令可以正确获取到public文件夹下的邮件模版sfdxforce:source:retrieve-mEmailTemplate:unfiled\$public\/My_te......
  • C++多态与虚拟:函数重载(Function Overloading)
    重载(Overloading):所谓重载是指不同的函数实体共用一个函数名称。例如以下代码所提到的CPoint之中,有两个memberfunctions的名称同为x():1classCPoint{23public:4floatx();5voidx(floatxval);67};  其两个memberfunctions实现代码如下:1f......
  • Bootstrip HTML 查询搜索常用格式模版
    BootstripHTML查询搜索常用格式模版<formclass="form-inlinemy-3d-flexalign-items-centerjustify-content-start"method="get"action="{%url'repair:repair_unaccepted'%}"><divclass="form-groupmr-2fle......
  • 界面组件DevExpress Blazor UI v23.2 - 支持.NET 8、全新的项目模版
    DevExpress BlazorUI组件使用了C#为BlazorServer和BlazorWebAssembly创建高影响力的用户体验,这个UI自建库提供了一套全面的原生BlazorUI组件(包括PivotGrid、调度程序、图表、数据编辑器和报表等)。DevExpress Blazor控件目前已经升级到v23.2版本了,新版本正式支持.NET8、拥......
  • error while loading shared libraries: libgsl.so.27: cannot open shared object
     001、问题(base)[root@pc1src]#treemixtreemix:errorwhileloadingsharedlibraries:libgsl.so.27:cannotopensharedobjectfile:Nosuchfileordirectory 002、查找该共享库(base)[root@pc1src]#find/-name"libgsl.so.27"##说明已经安......