← React Beginner Questions - Set 4 Q34

How does React handle forms?

React Beginner Questions - Set 4

The idiomatic answer is a controlled form: one state object, one change handler, values always known to React.

Example

import { useState } from 'react';

export default function Signup() {
  const [form, setForm] = useState({ email: '', plan: 'free', accept: false });

  function handleChange(e) {
    const { name, value, type, checked } = e.target;
    setForm(prev => ({ ...prev, [name]: type === 'checkbox' ? checked : value }));
  }

  function handleSubmit(e) {
    e.preventDefault();
    console.log(form);
  }

  return (
    <form onSubmit={handleSubmit}>
      <input name="email" value={form.email} onChange={handleChange} />
      <select name="plan" value={form.plan} onChange={handleChange}>
        <option value="free">Free</option>
        <option value="pro">Pro</option>
      </select>
      <label><input type="checkbox" name="accept" checked={form.accept} onChange={handleChange} /> Accept</label>
      <button type="submit">Create account</button>
    </form>
  );
}

What to notice

← Back to the question list