Controlled Components – Forms in React
In React, form elements like <input>
, <textarea>
, and <select>
are often made into “controlled components”. This means React controls their value using state.
✅ Basic Controlled Input
import { useState } from "react";
function NameForm() {
const [name, setName] = useState("");
const handleChange = (e) => {
setName(e.target.value);
};
return (
<div>
<label>Enter your name: </label>
<input type="text" value={name} onChange={handleChange} />
<p>Your name is: {name}</p>
</div>
);
}
✅ Handling Form Submit
function NameForm() {
const [name, setName] = useState("");
const handleSubmit = (e) => {
e.preventDefault(); // stops page reload
alert(`Submitted name: ${name}`);
};
return (
<form onSubmit={handleSubmit}>
<input
type="text"
value={name}
onChange={(e) => setName(e.target.value)}
placeholder="Enter name"
/>
<button type="submit">Submit</button>
</form>
);
}
✅ Multiple Inputs
If you have multiple inputs:
function ContactForm() {
const [form, setForm] = useState({ name: "", email: "" });
const handleChange = (e) => {
setForm({
...form,
[e.target.name]: e.target.value,
});
};
const handleSubmit = (e) => {
e.preventDefault();
console.log("Form submitted:", form);
};
return (
<form onSubmit={handleSubmit}>
<input
name="name"
placeholder="Name"
value={form.name}
onChange={handleChange}
/>
<input
name="email"
placeholder="Email"
value={form.email}
onChange={handleChange}
/>
<button type="submit">Send</button>
</form>
);
}
Keep Learning 🙂