Final Form 表单提交后无法重置字段值是怎么回事?
我用 Final Form 做了个简单的登录表单,提交成功后调用了 form.reset(),但输入框里的内容没清空,还是显示之前填的值,这是为啥?
我试过在 onSubmit 里直接调 reset,也试过用 mutators,都不行。控制台也没报错,就是 UI 没变。
<form onSubmit={handleSubmit}>
<input {...fields.email.input} placeholder="邮箱" />
<input {...fields.password.input} type="password" placeholder="密码" />
<button type="submit">登录</button>
</form>
试试把 reset 放到 form.submit() 的 then 里面执行,这样能确保表单完成整个提交流程后再重置:
另外记得检查你的输入组件是不是正确连接了 form 状态。我之前也踩过这个坑,有时候表单重置了但 UI 没更新,就是因为组件没监听到状态变化。
如果还不行,看看 final-form 是否有版本兼容问题,有时候新版的 API 跟旧版不太一样。最后还是建议对照下官方文档的相关章节,那上面有完整的例子可以参考。