create a component in react to submit a registration form using react-final-form in typescript

To create a component in React to submit a registration form using React-Final-Form in TypeScript, follow these steps:

  1. Install the required dependencies by running the following command in your terminal:

    index.ts
    npm install react-final-form final-form typescript @types/react-final-form @types/final-form
    
    93 chars
    2 lines
  2. Create a new file RegistrationForm.tsx and import necessary dependencies:

    import React, { FunctionComponent } from 'react';
    import { Form, Field } from 'react-final-form';
    import { Button, TextField } from '@material-ui/core';
    import { makeStyles, createStyles } from '@material-ui/core/styles';
    
    const useStyles = makeStyles(() =>
      createStyles({
        root: {
          display: 'flex',
          flexDirection: 'column',
          alignItems: 'center',
        },
        textField: {
          marginBottom: '10px',
        },
        submitButton: {
          marginTop: '10px',
        },
      })
    );
    
    488 chars
    21 lines
  3. Define the props for the component:

    type RegistrationFormProps = {
      onSubmit: (values: RegistrationFormValues) => void;
    };
    
    type RegistrationFormValues = {
      firstName: string;
      lastName: string;
      email: string;
      password: string;
      confirmPassword: string;
    };
    
    229 chars
    12 lines
  4. Create the component and the form:

    const RegistrationForm: FunctionComponent<RegistrationFormProps> = ({ onSubmit }) => {
      const classes = useStyles();
    
      const validate = (values: RegistrationFormValues) => {
        const errors: RegistrationFormValues = {};
    
        if (!values.firstName) {
          errors.firstName = 'Required';
        }
    
        if (!values.lastName) {
          errors.lastName = 'Required';
        }
    
        if (!values.email) {
          errors.email = 'Required';
        }
    
        if (!values.password) {
          errors.password = 'Required';
        }
    
        if (!values.confirmPassword) {
          errors.confirmPassword = 'Required';
        }
    
        if (values.password !== values.confirmPassword) {
          errors.confirmPassword = 'Passwords do not match';
        }
    
        return errors;
      };
    
      const handleSubmit = (values: RegistrationFormValues) => {
        onSubmit(values);
      };
    
      return (
        <Form
          onSubmit={handleSubmit}
          validate={validate}
          render={({ handleSubmit }) => (
            <form onSubmit={handleSubmit} className={classes.root}>
              <Field name="firstName">
                {({ input, meta }) => (
                  <TextField
                    {...input}
                    label="First Name"
                    variant="outlined"
                    className={classes.textField}
                    error={meta.touched && meta.error}
                  />
                )}
              </Field>
              ...
            </form>
          )}
        />
      );
    };
    
    1395 chars
    61 lines
  5. Use the component in your application:

    const handleRegistration = (values: RegistrationFormValues) => {
      console.log(values);
    };
    
    const App: FunctionComponent = () => {
      return <RegistrationForm onSubmit={handleRegistration} />;
    };
    
    195 chars
    8 lines

That's it! You now have a component in React that submits a registration form using React-Final-Form in TypeScript.

gistlibby LogSnag