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

Posted

技术标签:

【中文标题】React Hook Form - 在不清除表单的情况下重置“isDirty”?【英文标题】:React Hook Form - Resetting "isDirty" without clearing form? 【发布时间】:2021-01-05 06:14:23 【问题描述】:

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

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

想法?

【问题讨论】:

请附上相关代码。 【参考方案1】:

您可以向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。

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

【讨论】:

以上是关于React Hook Form - 在不清除表单的情况下重置“isDirty”?的主要内容,如果未能解决你的问题,请参考以下文章

如何使 react-hook-form 在一页中使用多个表单?

react-hook-form使用

React JS 多个提交按钮 react-hook-form

react form 赋值

react-hook-form axios post - 无法创建有效负载

如何使用 react-hook-form 有条件地禁用提交按钮?