React — Forms Validation
Basic Validation
function Form() {
const [errors, setErrors] = useState({});
const validate = (data) => {
const errors = {};
if (!data.name) {
errors.name = 'Name is required';
}
if (!data.email) {
errors.email = 'Email is required';
} else if (!/\S+@\S+\.\S+/.test(data.email)) {
errors.email = 'Email is invalid';
}
if (!data.password) {
errors.password = 'Password is required';
} else if (data.password.length < 6) {
errors.password = 'Password must be at least 6 characters';
}
return errors;
};
const handleSubmit = (e) => {
e.preventDefault();
const errors = validate(formData);
if (Object.keys(errors).length > 0) {
setErrors(errors);
return;
}
// Submit form
console.log('Form submitted:', formData);
};
return (
<form onSubmit={handleSubmit}>
<div>
<input
name="name"
value={formData.name}
onChange={handleChange}
/>
{errors.name && <span className="error">{errors.name}</span>}
</div>
<div>
<input
name="email"
type="email"
value={formData.email}
onChange={handleChange}
/>
{errors.email && <span className="error">{errors.email}</span>}
</div>
<div>
<input
name="password"
type="password"
value={formData.password}
onChange={handleChange}
/>
{errors.password && <span className="error">{errors.password}</span>}
</div>
<button type="submit">Submit</button>
</form>
);
}
Real-time Validation
function RealTimeForm() {
const [formData, setFormData] = useState({
email: '',
password: ''
});
const [errors, setErrors] = useState({});
const validateField = (name, value) => {
switch (name) {
case 'email':
if (!value) return 'Email is required';
if (!/\S+@\S+\.\S+/.test(value)) return 'Email is invalid';
return '';
case 'password':
if (!value) return 'Password is required';
if (value.length < 6) return 'Password must be at least 6 characters';
return '';
default:
return '';
}
};
const handleChange = (e) => {
const { name, value } = e.target;
setFormData({ ...formData, [name]: value });
// Validate on change
const error = validateField(name, value);
setErrors({ ...errors, [name]: error });
};
return (
<form>
<input
name="email"
type="email"
value={formData.email}
onChange={handleChange}
className={errors.email ? 'error' : ''}
/>
{errors.email && <span className="error">{errors.email}</span>}
<input
name="password"
type="password"
value={formData.password}
onChange={handleChange}
className={errors.password ? 'error' : ''}
/>
{errors.password && <span className="error">{errors.password}</span>}
</form>
);
}
Validation Examples
// Registration form
function RegistrationForm() {
const [formData, setFormData] = useState({
name: '',
email: '',
password: '',
confirmPassword: ''
});
const [errors, setErrors] = useState({});
const validate = () => {
const newErrors = {};
if (!formData.name) {
newErrors.name = 'Name is required';
}
if (!formData.email) {
newErrors.email = 'Email is required';
} else if (!/\S+@\S+\.\S+/.test(formData.email)) {
newErrors.email = 'Email is invalid';
}
if (!formData.password) {
newErrors.password = 'Password is required';
} else if (formData.password.length < 8) {
newErrors.password = 'Password must be at least 8 characters';
}
if (formData.password !== formData.confirmPassword) {
newErrors.confirmPassword = 'Passwords do not match';
}
return newErrors;
};
const handleSubmit = (e) => {
e.preventDefault();
const newErrors = validate();
if (Object.keys(newErrors).length > 0) {
setErrors(newErrors);
return;
}
console.log('Registration successful:', formData);
};
return (
<form onSubmit={handleSubmit}>
{/* Form fields with validation */}
</form>
);
}
Mini Practice
Write React code that:
- Implements basic form validation
- Adds real-time validation
- Creates a registration form with validation
- Displays error messages
Up Next
Next: Learn about Styling.
Related Topics
Frequently Asked Questions about Forms Validation
What is Forms Validation in React?
Forms Validation is a fundamental concept in React. This lesson explains it step by step with clear examples, making it easy for beginners to understand.
How do I learn Forms Validation?
Start by reading the explanation above, then try the code examples. Practice by modifying the examples and experimenting with different values. Hands-on practice is the best way to learn Forms Validation.
Why is Forms Validation important in React?
Forms Validation is essential for React development. Understanding this concept will help you write better code and solve real-world problems more effectively.