微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

React-Native (0.64.2) Formik handleSubmit onSubmit 不触发

如何解决React-Native (0.64.2) Formik handleSubmit onSubmit 不触发

相关模块

Formik:“2.1.4”

是的:“0.28.5”

React-Navigation v5

所以我已经为一个简单的 formik 问题苦苦挣扎了一天,我确定我一定遗漏了一些东西,但我希望得到一些帮助,因为我看不出我做错了什么。

我有两个文件Login/index.tsx & Login/LoginForm.tsx

Login/index.tsx 大部分看起来像这样:

  const handleSubmit = async (values) => {
    console.log("values submitted == ",values)
  }

  return (
    <View style={Styles.container}>
      <CircleIconButton
        size={60}
        backgroundColor={'white'} 
        onPress={goBack}
      >
        <Icon name={'arrow-left'} type={'FontAwesome5'} style={{ color: Colors.primaryOrange}} />
      </CircleIconButton>

      <Text style={[Typography.title,{color: 'white',marginTop: '30%'}]}>
        Login
      </Text>
      <Text style={[Typography.titleDesc,marginTop: '3%',marginBottom: '8%'}]}>
        Securely login to your account
      </Text>

      <Formik
        initialValues={formInitialValues}
        onSubmit={handleSubmit}
      >
        <LoginForm />
      </Formik>
      
    </View>
  )

Login/LoginForm.tsx 大部分看起来像这样:

const {handleChange,handleSubmit,values,isSubmitting,isValidating} = useFormikContext();

const { navigate } = useNavigation()

return (
    <View style={Styles.container}>
      <IVTextInput
        onChangeText={handleChange('email')}
        value={values?.email}
        editable
        fieldLabel={"Phone/Email"}
      />
      <IVTextInput
        isPassword
        editable
        containerStyle={{ marginTop: '8%',marginBottom: '15%' }}
        onChangeText={handleChange('password')}
        value={values?.password}
        fieldLabel={"Your Password"}
      />
      <RoundedButton
        block
        onPress={handleSubmit}
      >
        Log In
      </RoundedButton>
      <View style={{...allCenter,marginTop: '7%'}}>
        <Text
          style={[Typography.titleDesc,Styles.signupTextButton]}
          onPress={() => navigate('Signup')}
        >
          Don’t have an account? Register
        </Text>

        <Text style={[Typography.titleDesc,marginTop: '8%'}]}>
          Forgot Password
        </Text>

      </View>
    </View>
  )

LoginForm 由 <Formik> 标签包裹。然后我尝试访问 LoginForm.tsx 文件中的 formik 上下文。

我尝试过的事情:

  • values 变量发生变化时打印它(从我在文本字段中输入),我可以看到 values 对象正在跟踪我的击键

  • 打印 isSubmittingisValidating,并且在任何时候都没有 isSubmitting = true AND isValidating = false。当我提交 isSubmitting == trueisValidating == true 时。 Formik 的文档似乎表明,当 isValidating == false && isSubmitting == true 时,我知道我的表单何时提交,但这还没有发生。 >

  • 创建 Yup 架构,但我也尝试删除 Login/index.tsx 文件<Formik> 标记内的 yup 架构,无论哪种方式,当我点击登录按钮时,onSubmithandleSubmit 函数都不会执行任何操作。

  • 放入一个简单的 console.log() 语句来测试对我的 <RoundedButton> onPress 道具的操作是否有效,并且它有效,我的 console.log() 出现在控制台输出

  • <Formik> 开始标签内的 validate 道具返回一个空对象,因为我从网上查看得到的普遍共识是,当验证失败

有趣的信息:当我使用validationSchema时,我故意违反了验证,当我打印错误时,对象为空

要点是。 . .我试过的任何东西似乎都没有得到 onSubmit 或 handleSubmit 函数触发。请让我知道我能成为什么 做错了,任何帮助将不胜感激。

谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?