条件只读复选框仍然可编辑

Condtional readOnly checkbox still editable

我有 table 个复选框(true/false 值),initialValues 是通过 api 调用填充的。每个 "facility" 都有一个 EnabledImmutable 值。如果 Immutable 为真,则应选中 Enabled 复选框并且 readOnly,这意味着它不能取消选中。所以如果 ImmutablefalseEnabled 复选框应该是 editable.

我正在使用以下代码片段来呈现上述场景

<Table.Cell>
  {JSON.stringify(enabled) === "true" &&
  `facilities[${index}].immutable` ===
    "true" ? (
    <Field
      type="checkbox"
      name={`facilities[${index}].enabled`}
      readOnly
    />
  ) : (
    <>
     <Field
       type="checkbox"
       name={`facilities[${index}].enabled`}
     />
    </>
 )}
</Table.Cell>

I have a codesandbox here。您可以看到 checking/unchecking 沙箱中 table 下方处于调试状态的框更新的值。

似乎条件总是错误的并且呈现非 readOnly <Field />

试试这个:

<Table.Cell>
  {JSON.stringify(enabled) === "true" &&
  `facilities[${index}].immutable` ===
    "true" ? (
    <Field
      type="checkbox"
      name={`facilities[${index}].enabled`}
      // readOnly
      disabled
    />
  ) : (
    <>
     <Field
       type="checkbox"
       name={`facilities[${index}].enabled`}
     />
    </>
 )}
</Table.Cell>