【问题标题】:accessing "isValid" inside "validateForm" function returns wrong data (manual formik validation)在“validateForm”函数中访问“isValid”返回错误数据(手动formik验证)
【发布时间】:2021-05-21 12:30:35
【问题描述】:

上下文

在 react native(expo 应用程序)中有我自己的多步“formik”表单实现。我只想在按钮按下时验证(手动验证)。如果表单有效,则继续执行下一个表单步骤。

问题:

现在“validateForm”点内的“isValid”值错误,然后函数会产生问题来实现我的逻辑。

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

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

预期行为

  1. 当 promise 已解决时,需要在 validateForm().then() 函数中获得正确的“isValid”值

环境

Software Version(s)
Formik "^2.2.6"
React "16.13.1",
npm/Yarn npm
Operating System mac

【问题讨论】:

    标签: react-native expo formik yup


    【解决方案1】:

    我认为您的值不一致,因为您使用的是作为参数传递的 isValid,并且该值在 validateForm() 之后不会改变。

    在您的 handleCustomSubmit 函数中,尝试使用

    const handleCustomSubmit = (validateForm, isValid)=>{
      console.log("custom submit")
      validateForm().then((errors) => {        
        console.log("validation complete");
        console.log("errors are", errors)   
      });
    }
    

    如果errors对象为空,它应该是有效的。

    【讨论】:

      猜你喜欢
      • 2011-11-02
      • 1970-01-01
      • 1970-01-01
      • 2011-10-17
      • 1970-01-01
      • 2010-12-01
      • 2017-05-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多