首页 > 解决方案 > React Hook Form - 在不清除表单的情况下重置“isDirty”?

问题描述

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

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

想法?

标签: reactjsreact-hook-form

解决方案


您可以将一组新值发送到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回假。

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


推荐阅读