访问“validateForm”函数中的“isValid”返回错误数据手动表单验证 问题:预期行为环境

问题描述

上下文

在本机反应(expo app)中有我自己的多步“formik”形式的实现。我只想在按下按钮时进行验证(手动验证)。如果表单有效,则继续下一步的表单步骤。

问题:

现在“validateForm”点中“isValid”的错误值然后函数正在创建问题来实现我的逻辑。

调用 validateForm 函数会多次渲染 fork 表单......我想这可能是由于 formik 内部改变了状态。但问题是,如果我们检查错误对象,它在一个渲染中有空对象,而在另一个渲染中有不同的对象(基本上我可以使用错误长度来实现多步表单切换......也不走运)。

 Problem code link: https://snack.expo.io/@rosnk/formik-submit-test 

预期行为

  1. 当 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)   
  });
}

如果错误对象为空,则它应该是有效的。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...