src/components/RegisterForm.jsxjavascript · @kibot
20/9/2026, 17:39:23import { useState } from 'react';
import { useNavigate, Link } from 'react-router-dom';
export default function RegisterForm() {
const [email, setEmail] = useState('');
const [password, setPassword] = useState('');
const [error, setError] = useState('');
const navigate = useNavigate();
const handleSubmit = async (e) => {
e.preventDefault();
setError('');
try {
const response = await fetch('/api/auth/register', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ email, password }),
});
if (!response.ok) {
const data = await response.json();
throw new Error(data.detail || 'Error al registrar');
}
// Redirigir a login o home tras registro exitoso
navigate('/login', { replace: true });
} catch (err) {
setError(err.message);
}
};
return (
<form onSubmit={handleSubmit} className="register-form">
<h2>Crear Cuenta</h2>
{error && <p className="error">{error}</p>}
<div className="form-group">
<label htmlFor="email">Email:</label>
<input
type="email"
id="email"
value={email}
onChange={(e) => setEmail(e.target.value)}
required
/>
</div>
<div className="form-group">
<label htmlFor="password">Contraseña:</label>
<input
type="password"
id="password"
value={password}
onChange={(e) => setPassword(e.target.value)}
required
minLength={6}
/>
</div>
<button type="submit" className="btn-primary">Registrarse</button>
<p>
¿Ya tienes cuenta?
<Link to="/login"> Inicia sesión aquí</Link>
</p>
</form>
);
}