tdesign-vue-next
tdesign-vue-next copied to clipboard
默认插槽仅包含注释,props设置的值无效
trafficstars
tdesign-vue-next 版本
1.7.0
重现链接
No response
重现步骤
<template>
<!-- 期望展示"这是内容1", 实际展示空 -->
<t-menu-item content="这是内容1">
<!-- 这是注释 -->
</t-menu-item>
<!-- 期望展示"这是内容2", 实际展示空 -->
<t-menu-item content="这是内容2">
<div v-if="false">条件判断false,不会展示此div</div>
</t-menu-item>
</template>
期望结果
显示content中的内容
实际结果
显示空
框架版本
No response
浏览器版本
No response
系统版本
No response
Node版本
No response
补充说明
多个组件都有这个问题。
组件无子元素时,slots.default 为 undefined。
当在组件下有写注释,或者所有子元素条件判断均不成立,
理论上认为子元素为空,但此时slots.default 不为undefined, 返回的是一个数组,[{..., type: Symbol(v-cmt)}]
Symbol(v-cmt) 表示该vnode是comment的意思,
renderTNodeJSX是否应当加入判断过滤掉 type 为 comment 的 vnode ?
👋 @wvq,感谢给 TDesign 提出了 issue。 请根据 issue 模版确保背景信息的完善,我们将调查并尽快回复你。
如果没有子元素或许换一个展现方式自闭合可能更加美观且方便理解
<t-menu-item content="这是内容1" />
<!-- 这是注释 -->
这不能归类为书写方式或书写习惯问题。 注释就不应该参与代码逻辑,因为一行注释影响了程序运行的结果,这就很诡异。
可能我的观点比较粗浅,我觉得相同功能的props与slot应该是二选一而不是并存