vue警告Non-function value encountered for default slot.


字数:339 阅读时长:1分钟 阅读:85

vue + Naive UI 开发项目,使用 h 函数渲染 Naive UI 组件时,出现如下警告:[Vue warn]: Non-function value encountered for default slot. Prefer function slots for better performance.

Naive UI

警告翻译过来就是:「默认插槽为非函数值。推荐使用函数插槽以获得更佳性能。」

代码

在 table 组件中,使用 h 函数渲染 NButton 组件,出现警告:[Vue warn]: Non-function value encountered for default slot. Prefer function slots for better performance.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<script setup>
import { h, ref, reactive } from 'vue'
import { NEllipsis } from 'naive-ui'

const columns = reactive([
{
type: 'selection',
fixed: 'left',
width: 50,
},
{
title: 'dir',
key: 'dir',
width: 100,
// fixed: 'left',
render(row) {
return h(
NEllipsis,
{
'expand-trigger': 'click',
'line-clamp': 2,
style: {
maxWidth: '200px',
},
},
row.dir,
)
},
},
])
</script>

解决方案

h 函数的第三参数改为一个对象,并在对象中添加 default 属性,值为一个函数,返回渲染内容。如果有具名插槽,则在对象中添加 插槽名 为属性,值为一个函数返回 h (render) 渲染函数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
render(row) {
return () => h(
NEllipsis,
{
'expand-trigger': 'click',
'line-clamp': 2,
style: {
maxWidth: '200px',
},
},
{
default: () => row.dir,
// 具名插槽
tooltip: () =>
h(
'div',
{
style: {
maxWidth: '300px',
},
},
{
default: () => row.dir,
},
),
},
)
},

欢迎访问:天问博客

本文作者: Tiven
发布时间: 2024-04-11
最后更新: 2024-04-18
本文标题: vue警告Non-function value encountered for default slot.
本文链接: https://www.tiven.cn/p/a9f63cfb/
版权声明: 本作品采用 CC BY-NC-SA 4.0 许可协议进行许可。转载请注明出处!
欢迎留言,提问 ^_^
个人邮箱: tw.email@qq.com
notification icon
博客有更新,将会发送通知给您!