Skip to content

[Checkbox] falsy value 未透传到原生 input #6851

Closed

Description

@zhangpaopao0609

关联

问题描述

Checkbox.value 文档类型包含 string | number | boolean,但渲染原生 <input> 时使用了 truthy 判断:

value={props.value ? props.value : undefined}

因此 0、false 和空字符串都会被当成“未提供 value”。

复现

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

  1. github-actions commented on Aug 1, 2026

    @github-actions
    Contributor

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

  2. zhangpaopao0609 commented on Aug 1, 2026

    @zhangpaopao0609
    CollaboratorAuthor

    关联测试 PR:#6855。该 PR 不修改源码,按当前真实行为保留特征测试;源码修复时请同步更新对应断言。

  3. kyui-azusa commented on Aug 3, 2026

    @kyui-azusa
    Contributor

    我来处理这个问题,会将原生 input 的 value 透传改为仅在 undefined 时省略,并覆盖 0、false、空字符串三种合法 falsy 值。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions