### 关联 - 测试覆盖率专项:Tencent/tdesign-vue-next#5631 - Checkbox 测试分支:`test/checkbox-coverage`(PR 创建后补充链接) ### 问题描述 `Checkbox.value` 文档类型包含 `string | number | boolean`,但渲染原生 `<input>` 时使用了 truthy 判断: ```tsx value={props.value ? props.value : undefined} ``` 因此 `0`、`false` 和空字符串都会被当成“未提供 value”。 ### 复现 ```tsx mount(Checkbox, { props: { value: 0 } }); mount(Checkbox, { props: { value: false } }); mount(Checkbox, { props: { value: '' } }); ``` 检查每个组件中的原生 `input`。 ### 实际结果 三个 input 都没有 `value` attribute。组件内部选中逻辑仍使用 props,因此 CheckboxGroup 看起来可以工作,但原生表单提交以及通过 `event.target.value` 读取值时会得到浏览器默认值,而不是传入值。 ### 预期结果 只在 `value === undefined` 时省略原生属性;合法的 falsy 值应原样传给 input。 ### 补充说明 该问题是在基于最新 `develop`(`9e47c828a`)完全重写 Checkbox 单元测试时发现。测试 PR 不修改源码,会按当前真实行为保留特征测试;源码修复时应同步更新断言。
Activity
github-actions commentedon Aug 1, 2026
👋 @zhangpaopao0609,感谢给 TDesign 提出了 issue。
请根据 issue 模版确保背景信息的完善,我们将调查并尽快回复你。
zhangpaopao0609 commentedon Aug 1, 2026
关联测试 PR:#6855。该 PR 不修改源码,按当前真实行为保留特征测试;源码修复时请同步更新对应断言。
kyui-azusa commentedon Aug 3, 2026
我来处理这个问题,会将原生 input 的 value 透传改为仅在 undefined 时省略,并覆盖 0、false、空字符串三种合法 falsy 值。