在 React Hook 表单中显示来自控制器的错误

Joh*_*ngi 9 javascript reactjs material-ui react-hook-form

我试图从我的输入中抛出所需的错误,我已将其包装在react-hook-form版本 7 的控制器组件中。

我的输入是一个 Material-UI TextField;

<Controller
                        
    name="firstName"
    control={control}
    defaultValue=""
    rules={{ required: true}}
    render={({field}) =>
        <TextField
        id="firstName"
        name="firstName"
        autoComplete="fname"
        variant="outlined"
        fullWidth
        label="First Name"
        autoFocus={true}
        {...field} />
    }
/>
Run Code Online (Sandbox Code Playgroud)

我想在规则失败时暴露错误。

kno*_*fel 11

errors您需要将与您的字段名称匹配的对象的属性传递给您的 Material UI <TextField />。该errors对象可通过formState属性获得。

const {
    handleSubmit,
    control,
    formState: { errors }
  } = useForm();
Run Code Online (Sandbox Code Playgroud)

您还应该将 传递refinputRefprop,而不是将其设置为refprop。<TextField />如果提交时出现错误,这将自动聚焦输入。

<Controller
  name="firstName"
  control={control}
  defaultValue=""
  rules={{ required: true }}
  render={({ field: { ref, ...field } }) => (
    <TextField
      {...field}
      inputRef={ref}
      id="firstName"
      autoComplete="fname"
      variant="outlined"
      fullWidth
      error={!!errors.firstName}
      label="First Name"
    />
  )}
/>
Run Code Online (Sandbox Code Playgroud)

编辑 React Hook 表单 - MUI 自动完成(分叉)