vue3使用render函数渲染标签或组件

 场景是这样的:

使用naiveUI的<n-auto-complete>组件的下拉中需要动态渲染自定义的样式,
所以要使用到:render-label属性

  •  渲染普通的标签 div span,以下为单个或多个标签的方式
const renderLabel = (option: SelectOption): VNodeChild => {
    return h(
      'div',
      {
        style: {
          display: 'flex',
          alignItems: 'center',
          paddingLeft: '10px',
        },
      },
      [
        h('img', {
          src: option?.iconPath,
          round: true,
          size: 'small',
          // 添加事件
          onClick: () => {
            console.log('点击')
          },
        }),
        h(
          'div',
          {
            style: {
              marginLeft: '12px',
              padding: '4px 0',
            },
          },
          [h('div', null, [option?.name as string])],
        ),
      ],
    )
}
  • 渲染组件标签
const renderLabel = (option: SelectOption): VNodeChild => {
    return h(
      NEllipsis,
      {
        style: {
          maxWidth: '205px',
        },
      },
      [option?.label as string],
    )
}

这种写法虽然展示没问题,但console中会出现警告提示:

可修改为:(返回一个函数)
 

return h(
    NEllipsis,
      {
        style: {
          maxWidth: '100%',
        },
      },
      // 这里需返回一个函数
      () => [option?.label as string],
    )

 好啦 祝大家什么bug都能解决~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值