首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Formik,Yup,formik-material-ui注册表单,单击表单时显示电子邮件错误

Formik,Yup,formik-material-ui注册表单,单击表单时显示电子邮件错误
EN

Stack Overflow用户
提问于 2020-08-03 18:22:02
回答 1查看 436关注 0票数 0

我有一个用Formik,Yup和formik-material-ui构建的注册表单:

如果我点击表单上的任何地方,它会显示电子邮件错误,这意味着如果用户点击“已有帐户?登录”,表单将显示此错误,而不是重定向以登录:

代码语言:javascript
复制
      <Formik
        initialValues={{
          phoneNumber: '',
          email: '',
          password: '',
          confirmPassword: '',
          canMarket: false,
        }}
        validationSchema={yup.object().shape({
          email: yup
            .string('Email Address')
            .email('Enter a valid email')
            .required('Email is required'),
          password: yup
            .string()
            .required('Password is required')
            .min(8, 'Password is too short - should be 8 chars minimum'),
          confirmPassword: yup
            .string()
            .required('Confirm Password is required')
            .oneOf([yup.ref('password'), null], 'Passwords must match'),
          phoneNumber: yup.string().required('Phone Number is required'),
        })}
        onSubmit={(
          { phoneNumber, email, password, canMarket },
          { setSubmitting },
        ) => {
          signUp(client, phoneNumber, email, password, canMarket, history);
          setTimeout(() => {
            setSubmitting(false);
          }, 500);
        }}
      >
        {({ dirty, isValid, isSubmitting, handleSubmit }) => (
          <Form onSubmit={handleSubmit}>
            <Field
              className="auth__field"
              variant="outlined"
              fullWidth
              component={TextField}
              type="email"
              label="Email Address"
              name="email"
              autoFocus
              InputProps={{
                startAdornment: (
                  <InputAdornment position="start">
                    <EmailIcon color="primary" />
                  </InputAdornment>
                ),
              }}
            />
            <Field
              className="auth__field"
              variant="outlined"
              fullWidth
              component={TextField}
              type="password"
              label="Password"
              name="password"
              InputProps={{
                startAdornment: (
                  <InputAdornment position="start">
                    <LockIcon color="primary" />
                  </InputAdornment>
                ),
              }}
            />
            ...

我已经尝试添加updateOnBlur={true}和updateOnChanged={true},但都无济于事。我还尝试将此内容添加到电子邮件字段

代码语言:javascript
复制
error={touched.email && errors.email}

又是徒劳无功。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-03 18:45:25

解决了。我在电子邮件字段中设置了autoFocus,所以当我单击表单时,电子邮件字段会被标记为已触摸。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63227659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档