React Hook 表单 - 在不清除表单的情况下重置 "isDirty"?

React Hook Form - Resetting "isDirty" without clearing form?

基本上就是标题所说的。当我提交表单时,我正在检查登录是否成功,如果没有,它会显示一条消息。但是,当用户开始键入时,我希望此消息消失。

有点假设 isDirty 会在表单提交后被清除,但它仍然是脏的。我可以从 onSubmit 调用 reset,但这会清除表单的内容——我不想要这样。

想法?

您可以将一组新值发送到 reset。由于您确实在提交处理程序中收到了一组值,因此您可以通过以下方式连接这两个功能:

const {reset, handleSubmit, formState} = useForm();
const {isDirty} = formState;

const handleFormSubmit = (values) =>
{
    //This would be the call where you post your info
    fetch('google.com')
    .then(response => console.log('response', response))
    .finally(() => reset(values));
}

请注意上面示例中的 reset(values),这会将您的表单重置为其尝试提交的值。因此,渲染 isDirty 回到 false.

在发送信息后不会重新加载或重定向的表单中,这是一个相当普遍的需求,因此我认为他们最终会创建一种更简洁的方法来完成此操作。