如何解决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 举报,一经查实,本站将立刻删除。