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 JS 多个提交按钮 react-hook-form