reactjs 如何求解“termsOfUse必须是布尔类型,但最终值为:“on”.”使用离子、React、Yup和解析器

cl25kdpy  于 2022-11-04  发布在  React
关注(0)|答案(2)|浏览(190)

我想创建一个注册表单,其中所有字段都是必填的。我正在使用React Hook Form和Yup进行表单验证。所有字段都是必填的,包括两个复选框。当我提交表单时,我收到以下复选框错误:
termsOfUse必须是boolean类型,但最终值为:"on" .
我想这意味着我试图将字符串值'on'保存到yup字段中,这需要一个布尔值。这是因为复选框传递的是target.value而不是target.checked:{...注册(“隐私政策”)}
我仍然不知道如何传递“checked”而不是“value”,并在RHF中使用复选框输入。任何帮助都将不胜感激。谢谢:)
组件:
第一个

z0qdvdin

z0qdvdin1#

对于本机复选框,register调用就足够了:

<input
  type="checkbox"
  {...register("nativeCheckbox")}
/>

但是,当您使用<IonCheckbox />的外部受控组件时,您需要使用Controller组件:

<Controller
  control={control}
  name="checkbox"
  render={({ field: { value, onChange } }) => (
    <IonCheckbox
      checked={value}
      onIonChange={({ detail: { checked } }) => onChange(checked)}
    />
  )}
/>

有关更多信息,请查看文档中的此部分。

bz4sfanl

bz4sfanl2#

试试这个<Field type="checkbox" name="policy" :value="false" />
在字段后面的:value="false"之前添加

policy : yup.boolean().oneOf([true],"your message"),

相关问题