← React Beginner Questions - Set 4 Q34
React Beginner Questions - Set 4
The idiomatic answer is a controlled form: one state object, one change handler, values always known to React.
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>
);
}