繁体   English   中英

"Formik + Yup 不适用于带有语义 UI 的 React"

[英]Formik + Yup doesn't work with React with Semantic UI

我正在使用 Formik 和 Yup 实现一个注册表单进行验证。 我使用 React 和 Semantic UI,UI 如下所示: 我的注册用户界面<\/a>

这是我的代码:

import React from "react";
import { Segment, Grid, Header, Message, Form, Button } from 'semantic-ui-react';
import { Link } from "react-router-dom";
import { Formik } from "formik"; 
import * as Yup from "yup"; 
import {
  FormikDebug
} from "formik-semantic-ui-react";

interface FormValues {
  email: string,
  username: string, 
  password: string
}

const Signup = () => {

  const initialValues: FormValues = {
    email: '',
    username: '',
    password: ''
  };

  const validation = Yup.object({
    email: Yup.string().email("Invalid email address").required("Email required"),
    username: Yup.string()
      .min(6, "Must be at least 6 characters")
      .required("Username required"),
    password: Yup.string()
      .min(8, "Must be at least 8 characters")
      .required("Required"),
    // confirmPassword: Yup.string()
    // .oneOf([Yup.ref('password'), null], 'Password must match')
    // .required('Confirm password is required'),
  });

  return (
    <Grid textAlign='center' style={{ height: '100vh' }} verticalAlign='middle'>
    <Grid.Column style={{ maxWidth: 450 }}>
      <Header as='h1' color='teal' textAlign='center'>
         mysketch.io
      </Header>
      <Header color='teal'>
        Sign up to see photos and videos from your friends
      </Header>
        
      <Formik
        initialValues={initialValues}
        validationSchema={validation}
        onSubmit={values => 
          console.log(values)
        } 
      > 
        <Form size='large'>
          <Segment stacked>
            <Form.Input
              fluid icon='mail' 
              type="emai"
              iconPosition='left' 
              placeholder='E-mail address' 
              errorPrompt 
              name="email"
            />  
            <Form.Input 
              fluid
              icon='user'
              iconPosition='left'
              placeholder='username'
              errorPrompt
              name="username"
            />
            <Form.Input
              fluid
              icon='lock'
              iconPosition='left'
              placeholder='Password'
              type='password'
              errorPrompt
              name="password"
            />
            
            <Button type="submit" color='teal' fluid size='large'>
              Signup
            </Button>
          </Segment>
        </Form>
      </Formik>

      <Message>
        Have an account? <Link to="/">Log in</Link>
      </Message>

    </Grid.Column>
  </Grid>
  )
};

export default Signup; 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM