Formik 未提交值我在登录时显示 5 个字段中的 2 个,在注册时显示 5 个字段 formik 还要求填写其他 3 个字段

如何解决Formik 未提交值我在登录时显示 5 个字段中的 2 个,在注册时显示 5 个字段 formik 还要求填写其他 3 个字段

我使用一个组件作为登录注册表单。我有 FirstName、LastName、Email 和 Password 字段。我还应用了 Yup 验证并在每个字段上设置“必需”属性。由于我在登录期间只显示两个字段,因此 formik 表单不会提交表单值并要求填写所需的表单字段。那么,我是否必须为登录表单创建另一个组件,或者可以在这个单一表单中完成。

 <Formik
            initialValues={initialValues}
            onSubmit={(values)=>{
              console.log(formData);
                setFormData({...values})
                console.log(formData);
                console.log(values)
            }}
            validationSchema={validationSchema}
            >
            {(formik) => (
                <Form className={classes.form} onSubmit={formik.handleSubmit}>
                <Grid container spacing={2}>
                    {isSignUp && (
                    <>
                        <Input
                        name="firstName"
                        label="First Name"
                        type="text"
                        half
                        />
                        <Input name="lastName" label="Last Name" type="text" half />
                    </>
                    )}
                    <Input name="email" label="Email" type="email" />
                    <Input
                    name="password"
                    label="Password"
                    type={showPassword ? "text" : "password"}
                    handleShowPassword={handleShowPassword}
                    />
                    {isSignUp ? (
                    <Input
                        name="confirmPassword"
                        type="password"
                        label="Confirm Password"
                    />
                    ) : null}
                </Grid>
                <Button className={classes.submit}
                    type="submit"
                    variant="contained"
                    fullWidth
                    color="primary"
                >
                    {isSignUp ? "Sign Up" : "Sign In"}
                </Button>
                
                <Grid container justify="flex-end">
                <Grid item>
                <Button color="primary" onClick={switchMode}>{isSignUp ?"Already have an account?Sign In":"Don't have an account?Sign Up"}</Button>
                </Grid>
                </Grid>
                </Form>
                
            )}
            </Formik>

解决方法

我为这两个字段添加了另一个“SignInSchema”,现在工作正常。 validationSchema={isSignUp?validationSchema:signInSchema}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 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”。这是什么意思?