当前位置: 首页 > news >正文

Vue3在使用渲染函数h时候使用v-loading

v-loading 指令在h函数中无法像这样直接使用

const = loading = ref(true) 
const divVNode = () => h('div',{directives: [{name: 'loading',value: loading.value,modifiers: {}}]},[h('p', '这是一个带有 v-loading 的组件'),loading.value ? h(ElLoading, { fullscreen: false }) : null]);

它必须在setup()和render()函数中使用

import { h, resolveDirective, withDirectives } from 'vue'const vLoading = resolveDirective('loading');export default {name: 'MyComponent',data() {return {loading: true};},render() {const vnode = h('div', { class: 'box' }, '加载中内容');return withDirectives(vnode, [[vLoading, this.loading]]);}
}

resolveDirective, withDirectives 这两个指令需要搭配使用

具体用法请看文档https://vuejs.org/api/render-function#withdirectives

当然也可以在render()中改写成上面directives的形式的写法

也可以使用defineComponent比如这样

  const confirmForm = defineComponent({name: "ConfirmForm",setup() {const loading = ref(true);const vLoading = resolveDirective("loading");onMounted(() => {//某个接口请求getWarehouseProjectReceive({projectId: row?.projectId ?? "",isReceive: "1"}).then(r => {loading.value = false;}).catch(() => {loading.value = false;});});return () =>withDirectives(h('div',{},{default:() => "加载中....."}),[[vLoading, loading.value]]);}});

相关文章:

  • 「数学::博弈论」Nim游戏(尼姆游戏)/ Luogu P2197(C++)
  • RabbitMQ是什么?应用场景有哪些?
  • 基于EMD-PCA-LSTM的光伏功率预测模型研究
  • OpenEvidence AI临床决策支持工具平台研究报告
  • 【Python】抽象基类ABC
  • 【springcloud学习(dalston.sr1)】服务消费者通过restTemplate来访问服务提供者(含源代码)(五)
  • 仿生眼机器人(人脸跟踪版)系列之一
  • 基于EFISH-SCB-RK3576/SAIL-RK3576的智能零售柜技术方案
  • Web 架构之会话保持深度解析
  • 使用GRPO训练调度事件的语言模型!
  • Vue3学习(组合式API——Watch侦听器详解)
  • TTS-Web-Vue系列:Vue3实现侧边栏与顶部导航的双向联动
  • 【愚公系列】《Manus极简入门》038-数字孪生设计师:“虚实映射师”
  • elementplus el-tree 二次封装支持配置删除后展示展开或折叠编辑复选框懒加载功能
  • 02_Servlet
  • Python模块引用
  • 鸿蒙OSUniApp 实现一个精致的日历组件#三方框架 #Uniapp
  • NSSCTF [HNCTF 2022 WEEK4]
  • CS4334立体声D/A转换器:为高品质音频设计提供低成本的解决方案
  • Vue 和 React 状态管理的性能优化策略对比
  • 德国总理默茨发表首份政府声明:将提升国防能力,全力发展经济
  • 外交部:中方对美芬太尼反制仍然有效
  • 牛市早报|中方调整对美加征关税措施,五部门约谈外卖平台企业
  • 人民网评:守护健康证的“健康”,才有舌尖上的安全
  • 全国汽车以旧换新补贴申请量突破1000万份
  • 今起公开发售,宁德时代将于5月20日在港股上市