Building Forms in React: Handling Input and Validation

Lavesh Katariya

Lavesh Katariya

· 1 min read
Building Forms in React: Handling Input and Validation

Forms are a crucial part of any web application. In React, building forms efficiently and validating user inputs ensures a seamless user experience.

Creating Forms in React

React simplifies form creation by leveraging controlled components. Controlled components allow you to manage form input values using React state.

Example of a Controlled Component

import React, { useState } from 'react';

function LoginForm() {
    const [email, setEmail] = useState('');
    const [password, setPassword] = useState('');

    const handleSubmit = (event) => {
        event.preventDefault();
        console.log({ email, password });
    };

    return (
        <form onSubmit={handleSubmit}>
            <label>
                Email:
                <input
                    type="email"
                    value={email}
                    onChange={(e) => setEmail(e.target.value)}
                />
            </label>
            <label>
                Password:
                <input
                    type="password"
                    value={password}
                    onChange={(e) => setPassword(e.target.value)}
                />
            </label>
            <button type="submit">Login</button>
        </form>
    );
}

export default LoginForm;

Form Validation Techniques

1. Client-Side Validation

Validate user input in real-time using event handlers and regular expressions.

function validateEmail(email) {
    const regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
    return regex.test(email);
}

2. Using Libraries

Libraries like Formik and React Hook Form simplify form state management and validation.

Example with React Hook Form:

import { useForm } from 'react-hook-form';

function SignupForm() {
    const { register, handleSubmit, errors } = useForm();

    const onSubmit = (data) => console.log(data);

    return (
        <form onSubmit={handleSubmit(onSubmit)}>
            <input name="username" ref={register({ required: true })} />
            {errors.username && <span>Username is required</span>}

            <input name="email" ref={register({ pattern: /^[^\s@]+@[^\s@]+\.[^\s@]+$/ })} />
            {errors.email && <span>Invalid email</span>}

            <button type="submit">Submit</button>
        </form>
    );
}

Best Practices for Forms

  1. Use Controlled Components: Keep form inputs synced with state for better control.
  2. Validate on Blur or Submit: Avoid excessive re-renders by validating input on blur or form submission.
  3. Provide Feedback: Show users validation errors clearly and suggest corrections.
  4. Optimize Performance: Use libraries for complex forms to reduce boilerplate code.

Final Thoughts

Building forms in React requires a balance of simplicity and functionality. By combining controlled components with modern validation libraries, you can create robust, user-friendly forms.

Lavesh Katariya

About Lavesh Katariya

Innovative Full-Stack Developer | Technical Team Lead | Cloud Solutions Architect

With over a decade of experience in building and leading cutting-edge web application projects, I specialize in developing scalable, high-performance platforms that drive business growth. My expertise spans both front-end and back-end development, making me a versatile and hands-on leader capable of delivering end-to-end solutions.

Copyright © 2025 Lavesh Katariya. All rights reserved.