【问题标题】:ReactJS disabling form if checkbox is checked如果选中复选框,则 ReactJS 禁用表单
【发布时间】:2020-05-06 18:09:50
【问题描述】:

我有一个复选框。如果选中该复选框,则表单应关闭。但这对我不起作用。我有以下代码:

const [IsChacked, setIsChacked] = useState(false);

const onChangeParams = (name, setChackedValue, defaultChecked) => {
    if (name === "foreign_citizen") {
        let value = defaultChecked.target.value;           
        setChackedValue(name, value)
        if (parseInt(value) === 1) {
            setIsChacked(true);
        }
    }
};

我的表格是这样的:

<Form.Check
  onChange={(e => onChangeParams("foreign_citizen", e, setChackedValue))}
  name="foreign_citizen"
  defaultChecked={values.foreign_citizen}
  isInvalid={touched.foreign_citizen && !!errors.foreign_citizen}
  type="checkbox"
  label="Наличие паспорта в деле"   />



{IsChacked ? (< > Dos something here</>) : ( <></>)}

如果我选中复选框,则会出现类似错误: TypeError:无法读取未定义的属性“目标”

那么我哪里错了?我不理解...

【问题讨论】:

  • e.target.checked 而不是 e.target.value

标签: reactjs forms checkbox


【解决方案1】:

onChange={(e =&gt; onChangeParams("foreign_citizen", e, setChackedValue))}这里的事件对象是第二个参数

const onChangeParams = (name, setChackedValue, defaultChecked) => {
    if (name === "foreign_citizen") {
        let value = defaultChecked.target.value; 

但上面的事件对象是第三个参数

尝试改变 onChange={(e =&gt; onChangeParams("foreign_citizen", setChackedValue, e,))}

您还必须将表单包含在 Fragment 中

 return (
    <>
      <Form.Check
        onChange={(e => onChangeParams("foreign_citizen", setChackedValue, e,))}
        name="foreign_citizen"
        defaultChecked={values.foreign_citizen}
        isInvalid={touched.foreign_citizen && !!errors.foreign_citizen}
        type="checkbox"
        label="Наличие паспорта в деле"
      />
      {IsChacked ? <> Dos something here</> : <></>}
    </>
  );

类似的代码框 - https://codesandbox.io/s/pedantic-blackwell-e7uhy

【讨论】:

  • 无解,返回TypeError: Cannot read property 'target' of undefined
  • e.target.checked 而不是 e.target.value
  • 是的,我确实喜欢,但没有解决。如果我检查它仍然返回目标未定义的错误。
猜你喜欢
  • 1970-01-01
  • 2014-07-11
  • 2022-01-19
  • 1970-01-01
  • 2020-06-22
  • 2015-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多