next.js 为什么表单域在提交时不设置为脏?React-Hook-Form

vc9ivgsu  于 2022-12-23  发布在  React
关注(0)|答案(1)|浏览(158)

好了,伙计们,我们通常做的是,如果用户触摸输入,那么我们验证它,并显示消息。这是确定的,但当用户点击提交,那么所有字段应设置为脏,所有错误消息应可见。但这不会发生在我的代码

const methods = useForm<FormProps>({
    mode: 'onTouched',
    defaultValues: {
      ...user.data,
    },
    resolver: yupResolver(validationSchema),
  });

        <ColumnStack spacing={0}>
          <InputLabel>First Name</InputLabel>
          <Controller
            control={control}
            name='firstName'
            render={({ field, formState }) => (
              <TextField
                placeholder='Enter Your First Name'
                error={formState.dirtyFields.firstName && formState.errors.firstName.message}
                helperText={formState.dirtyFields.firstName && formState.errors.firstName.message}
                disabled={loading}
                {...field}
              />
            )}
          />
        </ColumnStack>

我应该如何解决这个问题?当用户单击“提交”时,所有表单域都不会设置为脏。我尝试将验证模式更改为“onChange”、“onSubmit”、“all”,但它们都没有解决我的问题

rslzwgfq

rslzwgfq1#

您可以使用
setValue("fieldName", value, { shouldDirty: true })当更新表单值时

相关问题