vue之 h() 函数

前言

Vue推荐在绝大数情况下使用模板来创建HTML,然后一些特殊的场景,你真的需要JavaScript的完全编程的能力,这个时候你可以使用渲染函数 ,它比模板更接近编译器;

h()函数是什么

Vue在生成真实的DOM之前,首先会将节点转换成VNode,而VNode组合在一起形成一颗树结构,就是虚拟DOM(VDOM),最后VDOM才渲染成真实的DOM;

如果我们直接编写生成vnode的代码,那效率会更高,这里就是h()函数。h函数也可以称为createVnode函数,用于创建 vnode 的一个函数

h()函数怎么用

h函数 接收三个参数。 例:()=>h('h1',{class="classsNmae"}, '大家好!')
第一个: 可以为一个html标签,一个组件,一个异步组件,或者是一个函数式组件。
第二个:{ Object } Props,与attributes和props,以及事件对应的对象,我们可以在模板中使用,如果没有需要传入的属性,可以设置为null。
第三个:{String | Object |Array}可以是字符串Text文本或者是h函数构建的对象再者可以是有插槽的对象。

代码例子:

  {
          label: t('components.SubTaskDetail.5q09prnzux41'),
          value: dataCheckDetail
            ? h(
                'div',
                null,
                h('div', { class: 'desc-value-row' }, [
                  h(
                    'div',
                    null,
                    t('components.SubTaskDetail.5q09xhsvcq44', {
                      totalDataSize: dataCheckData.value?.total || 0,
                      totalRowCount: dataCheckData.value?.totalRows || 0,
                      totalTableCount: dataCheckData.value?.tableCount || 0,
                      totalTableFinishCount:
                        dataCheckData.value?.completeCount || 0
                    })
                  ),
                  h(
                    'div',
                    { class: 'arco-tag arco-tag-checked speed-tag' },
                    t('components.SubTaskDetail.5q09xhsvcq45', {
                      avgSpeed: dataCheckData.value?.avgSpeed || 0
                    })
                  )
                ])
              )
            : t('components.SubTaskDetail.5q09prnznzg0'),
          span: 5
        }

//  "5q09prnzux41": "数据校验:",
//  "5q09xhsvcq44": "数据总量:{totalDataSize}MB,数据总行数:{totalRowCount}行,数据总表数:{totalTableCount}张,已完成表数:{totalTableFinishCount}张",
//  "5q09xhsvcq45": "平均校验速率:{avgSpeed}MB/s"


//:deep深度选择器
  :deep(.desc-value-row) {
    display: flex;
    align-items: center;
  }

  :deep(.speed-tag) {
    margin-left: 50px;
  }

效果: 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值