Non-function value encountered for slot “reference“. Prefer function slots for better performance.

问题截图

在这里插入图片描述

问题代码

		h(
          ElPopconfirm,
          {
            title: 'xxx',
            key: Math.random()
          },
          {
            reference: h(
              'span',
              {
                link: true,
                type: 'danger'
              },
              [
                h(
                  ElButton,
                  {
                    link: true,
                    type: 'danger',
                    onClick: () => {}
                  },
                  {
                    default: () => '删除'
                  }
                )
              ]
            )
          }
        )

问题分析

  1. 主要问题 vue3 中 h 函数第三个参数需要函数返回
  2. 代码中 ElPopconfirm 的 h 函数第三个参数插槽模式,插槽中 reference 直接返回了个 h 函数的渲染结果
  3. h 函数的渲染结果是一个对象!
  4. 所以说以上你并没有以函数的形式返回,而是返回了一个对象!这下知道如何做了嘛
  5. 把 reference: h(x,x,x) 更改为 reference: () => h(x,x,x)就行了
  6. 这类型的警告错误就是提醒你 你代码虽然实现了,但是不够完美。一般直接定位到h函数是否函数返回就行了。

解决后代码

		h(
          ElPopconfirm,
          {
            title: 'xxx',
            key: Math.random()
          },
          {
            reference: () => h(
              'span',
              {
                link: true,
                type: 'danger'
              },
              [
                h(
                  ElButton,
                  {
                    link: true,
                    type: 'danger',
                    onClick: () => {}
                  },
                  {
                    default: () => '删除'
                  }
                )
              ]
            )
          }
        )
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值