tdesign-vue-next icon indicating copy to clipboard operation
tdesign-vue-next copied to clipboard

默认插槽仅包含注释,props设置的值无效

Open wvq opened this issue 1 year ago • 4 comments
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.defaultundefined。 当在组件下有写注释,或者所有子元素条件判断均不成立, 理论上认为子元素为空,但此时slots.default 不为undefined, 返回的是一个数组,[{..., type: Symbol(v-cmt)}] Symbol(v-cmt) 表示该vnode是comment的意思, renderTNodeJSX是否应当加入判断过滤掉 type 为 comment 的 vnode ?

wvq avatar Dec 14 '23 11:12 wvq

👋 @wvq,感谢给 TDesign 提出了 issue。 请根据 issue 模版确保背景信息的完善,我们将调查并尽快回复你。

github-actions[bot] avatar Dec 14 '23 11:12 github-actions[bot]

如果没有子元素或许换一个展现方式自闭合可能更加美观且方便理解

<t-menu-item content="这是内容1" /> 
<!-- 这是注释 -->

selicens avatar Dec 15 '23 10:12 selicens

这不能归类为书写方式或书写习惯问题。 注释就不应该参与代码逻辑,因为一行注释影响了程序运行的结果,这就很诡异。

wvq avatar Dec 15 '23 15:12 wvq

可能我的观点比较粗浅,我觉得相同功能的props与slot应该是二选一而不是并存

selicens avatar Dec 16 '23 01:12 selicens