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

组件内条件逻辑异常:Draft状态下Rate字段Checkbox不显示

问题解决:Draft状态下Checkbox不显示的逻辑错误

问题出在逻辑运算符优先级上:JavaScript中&&的优先级高于||,你的原代码status === "Draft" || status === "Pending" && <组件>等价于:

(status === "Draft") || (status === "Pending" && <组件>)

当status为Draft时,表达式结果是true,但React不会渲染布尔值,所以Checkbox不显示;只有status为Pending时,才会执行&&后的组件渲染。

修正后的代码

把两个状态判断用括号包裹,确保先执行||逻辑,再和组件做&&判断:

<HrCurrencyInput
    name='Rate'
    label='Rate'
    width={width.medium}
    onChange={handleChange}
    value={formik.values.OverrideRate ? formik.values.Rate : selectedBillable?.Cost ?? ''}
    errors={formik.errors.Rate}
    InputProps={{
        endAdornment: 
        (
          (status === "Draft" || status === "Pending") &&
          (
            <InputAdornment position="end">
                <HrCheckBox
                    name="OverrideRate"
                    checked={formik.values.OverrideRate}
                    onChange={handleOverrideChange}
                    sx={{
                        m: "0 -8px 0 0",
                        "& .MuiCheckbox-root": {
                            p: 0
                        }
                    }}
                />
            </InputAdornment>
            )
        )
    }}
    InputLabelProps={{ shrink: true }}
    disabled={!formik.values.OverrideRate}
/>

状态效果对比

  • Pending状态:
    Pending状态
  • Draft状态(修正后会显示Checkbox):
    Draft状态

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 07:05:23