好了,伙计们,我们通常做的是,如果用户触摸输入,那么我们验证它,并显示消息。这是确定的,但当用户点击提交,那么所有字段应设置为脏,所有错误消息应可见。但这不会发生在我的代码
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”,但它们都没有解决我的问题
1条答案
按热度按时间rslzwgfq1#
您可以使用
setValue("fieldName", value, { shouldDirty: true })
当更新表单值时