问题描述
上下文
在本机反应(expo app)中有我自己的多步“formik”形式的实现。我只想在按下按钮时进行验证(手动验证)。如果表单有效,则继续下一步的表单步骤。
问题:
现在“validateForm”点中“isValid”的错误值然后函数正在创建问题来实现我的逻辑。
还调用 validateForm 函数会多次渲染 fork 表单......我想这可能是由于 formik 内部改变了状态。但问题是,如果我们检查错误对象,它在一个渲染中有空对象,而在另一个渲染中有不同的对象(基本上我可以使用错误长度来实现多步表单切换......也不走运)。
Problem code link: https://snack.expo.io/@rosnk/formik-submit-test
预期行为
- 当 promise 被解析时,需要在 validateForm().then() 函数中使用正确的“isValid”值
环境
软件 | 版本 |
---|---|
Formik | "^2.2.6" |
反应 | "16.13.1", |
npm/纱线 | npm |
操作系统 | mac |
解决方法
我认为您的值不一致,因为您使用的是作为参数传递的 isValid 并且该值在 validateForm() 之后不会更改。
在您的 handleCustomSubmit 函数中,尝试使用
const handleCustomSubmit = (validateForm,isValid)=>{
console.log("custom submit")
validateForm().then((errors) => {
console.log("validation complete");
console.log("errors are",errors)
});
}
如果错误对象为空,则它应该是有效的。