【发布时间】:2021-01-05 06:14:23
【问题描述】:
基本上就是标题所说的。当我提交表单时,我正在检查登录是否成功,如果没有,它会显示一条消息。但是,当用户开始键入时,我希望此消息消失。
有点假设isDirty 会在表单提交后被清除,但它仍然是脏的。我可以从onSubmit 拨打reset,但这会清除表单的内容——这是我不想要的。
想法?
【问题讨论】:
-
请附上相关代码。
基本上就是标题所说的。当我提交表单时,我正在检查登录是否成功,如果没有,它会显示一条消息。但是,当用户开始键入时,我希望此消息消失。
有点假设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。
在发送信息后不重新加载或重定向的表单中,这是一个相当普遍的需求,因此我认为他们最终会创建一种更简洁的方式来执行此操作。
【讨论】: