You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

满足条件时表单按钮未切换显示问题求助

表单按钮状态切换问题解决

你的核心问题是条件判断逻辑错误:

  • Object.values(formData).filter(value => value !== null) 返回的是一个数组,把数组和true做==比较永远会得到false——因为数组是引用类型,和布尔值类型不匹配,导致按钮状态始终无法切换。

正确的判断方式

推荐用Array.every()方法直接检查所有字段是否不为null,逻辑更清晰高效:

{ Object.values(formData).every(value => value !== null) ? (
    <Button
        Size='w-full'
        Caption='Submit & Continue'
        AdditionalClasses='block text-center'
        Type={'primary'}
    />
) : (
    <Button
        Size='w-full'
        Caption='Please fill in the above form to continue'
        AdditionalClasses='block justify-center'
        Disabled={0}
        OnClick={test}
        Type={'disabled'}
    />
)}

补充说明

如果坚持用filter的方式,需要判断过滤后的数组长度是否等于原对象的属性数量,代码如下:

{ Object.values(formData).filter(value => value !== null).length === Object.keys(formData).length ? (
    // 启用状态按钮
) : (
    // 禁用状态按钮
)}

但every()更适合这种"所有元素都满足条件"的场景,性能也更好——一旦遇到不满足的元素会立即停止遍历。

内容的提问来源于stack exchange,提问作者Richard Bridge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 12:52:05