DEV Community

Cover image for React Form Component – Blog Explanation with Code
Jayashree
Jayashree

Posted on

React Form Component – Blog Explanation with Code

This component is a simple user registration form built using React. It shows how to manage form data using state, handle input changes, and perform basic validation.

import { useState } from "react";

function FormValidation() {
  const [userdata, setUserdata] = useState({
    name: "",
    age: "",
    mobile: "",
    email: "",
    dob: "",
    password: ""
  });

  // Handle input change
  function getdata(e) {
    const { name, value } = e.target;

    setUserdata({
      ...userdata,
      [name]: value
    });
  }

  // Validate form
  function validate() {
    const { name, age, mobile, email, dob, password } = userdata;

    if (name && age && mobile && email && dob && password) {
      alert("Submitted successfully...");
    } else {
      alert("Please fill all fields");
    }
  }

  // Handle Enter key submit
  function handlekey(e) {
    if (e.key === "Enter") {
      validate();
    }
  }

  return (
    <div>
      <form onKeyDown={handlekey}>
        <label>Enter your name</label><br />
        <input
          name="name"
          type="text"
          onChange={getdata}
          value={userdata.name}
        /><br />

        <label>Enter your age</label><br />
        <input
          name="age"
          type="text"
          onChange={getdata}
          value={userdata.age}
        /><br />

        <label>Enter your mobile</label><br />
        <input
          name="mobile"
          type="number"
          onChange={getdata}
          value={userdata.mobile}
        /><br />

        <label>Enter your email</label><br />
        <input
          name="email"
          type="email"
          onChange={getdata}
          value={userdata.email}
        /><br />

        <label>Enter your date of birth</label><br />
        <input
          name="dob"
          type="date"
          onChange={getdata}
          value={userdata.dob}
        /><br />

        <label>Create password</label><br />
        <input
          name="password"
          type="password"
          onChange={getdata}
          value={userdata.password}
        /><br />

        <button type="button" onClick={validate}>
          Submit
        </button>
      </form>
    </div>
  );
}

export default FormValidation;
Enter fullscreen mode Exit fullscreen mode

State Management

We store all form fields inside a single state object using useState.

import { useState } from "react";

function FormValidation() {
  const [userdata, setUserdata] = useState({
    name: "",
    age: "",
    mobile: "",
    email: "",
    dob: "",
    password: ""
  });
Enter fullscreen mode Exit fullscreen mode

Handling Input Changes

Each input updates only its own field in the state.

function getdata(inputdata) {
    let data = inputdata.target;

    setUserdata({
      ...userdata,
      [data.name]: data.value
    });
  }
Enter fullscreen mode Exit fullscreen mode

Validation Logic

Before submitting, we check whether all fields are filled.

function validate() {
    let { name, age, mobile, email, dob, password } = userdata;

    if (name && age && mobile && email && dob && password) {
      alert("submitted...");
    } else {
      alert("please fill all fields");
    }
  }
Enter fullscreen mode Exit fullscreen mode

Handling Enter Key

This is used to submit the form using the keyboard (Enter key).

  function handlekey(key) {
    if (key.key === "Enter") {
      validate();
    }
  }
Enter fullscreen mode Exit fullscreen mode

Form UI

All inputs are controlled components connected to state.

return (
    <div>
      <form>
        <label>Enter your name</label><br />
        <input
          name="name"
          type="text"
          onChange={getdata}
          value={userdata.name}
        /><br />

        <label>Enter your age</label><br />
        <input
          name="age"
          type="text"
          onChange={getdata}
          value={userdata.age}
        /><br />

        <label>Enter your mobile</label><br />
        <input
          name="mobile"
          type="number"
          onChange={getdata}
          value={userdata.mobile}
        /><br />

        <label>Enter your email</label><br />
        <input
          name="email"
          type="email"
          onChange={getdata}
          value={userdata.email}
        /><br />

        <label>Enter your date of birth</label><br />
        <input
          name="dob"
          type="date"
          onChange={getdata}
          value={userdata.dob}
        /><br />

        <label>Create password</label><br />
        <input
          name="password"
          type="password"
          onChange={getdata}
          value={userdata.password}
        /><br />

        <button type="button" onClick={validate}>
          Submit
        </button>
      </form>
    </div>
  );
}

export default FormValidation;
Enter fullscreen mode Exit fullscreen mode

Conclusion

This React component demonstrates:

  • Controlled form inputs
  • State management using useState
  • Dynamic field update using input name
  • Basic form validation
  • Simple user interaction handling

With small improvements, this can be extended into a real-world registration system with backend integration.

Top comments (0)