馃摛 C贸mo manejar el submit de formularios en React correctamente

Submit de formularios en React

馃摛 C贸mo manejar el submit de formularios en React correctamente

En React, el manejo del submit de un formulario no es autom谩tico como en HTML tradicional. Debemos usar la propiedad onSubmit y evitar que el formulario recargue la p谩gina con event.preventDefault().


1️⃣ Formulario simple con submit

Un ejemplo b谩sico donde capturamos el evento submit y mostramos los datos ingresados:

function App() {
  const [nombre, setNombre] = React.useState("");

  const handleSubmit = (e) => {
    e.preventDefault(); // evita la recarga de la p谩gina
    alert(`El nombre ingresado es: ${nombre}`);
  };

  return (
    <form onSubmit={handleSubmit}>
      <label>Nombre:</label>
      <input type="text" value={nombre} onChange={e => setNombre(e.target.value)} />
      <button type="submit">Enviar</button>
    </form>
  );
}

ReactDOM.createRoot(document.getElementById('root')).render(<App />);
  

2️⃣ Manejo de m煤ltiples campos y submit

Para formularios con varios inputs, usamos un estado como objeto y manejamos el submit de forma centralizada:

function App() {
  const [formData, setFormData] = React.useState({ nombre: "", email: "" });

  const handleChange = (e) => {
    setFormData({ ...formData, [e.target.name]: e.target.value });
  };

  const handleSubmit = (e) => {
    e.preventDefault();
    console.log("Datos del formulario:", formData);
    alert(`Nombre: ${formData.nombre}, Email: ${formData.email}`);
  };

  return (
    <form onSubmit={handleSubmit}>
      <label>Nombre:</label>
      <input name="nombre" value={formData.nombre} onChange={handleChange} />

      <label>Email:</label>
      <input name="email" value={formData.email} onChange={handleChange} />

      <button type="submit">Enviar</button>
    </form>
  );
}

ReactDOM.createRoot(document.getElementById('root')).render(<App />);
  

3️⃣ Validaci贸n y submit

Podemos combinar la validaci贸n de campos con el manejo del submit para asegurar que los datos sean correctos antes de enviarlos:

function App() {
  const [email, setEmail] = React.useState("");
  const [error, setError] = React.useState("");

  const handleSubmit = (e) => {
    e.preventDefault();
    if (!email.includes("@")) {
      setError("Por favor ingresa un email v谩lido.");
    } else {
      setError("");
      alert(`Email enviado: ${email}`);
    }
  };

  return (
    <form onSubmit={handleSubmit}>
      <label>Email:</label>
      <input type="email" value={email} onChange={e => setEmail(e.target.value)} />
      <button type="submit">Enviar</button>

      {error && <p style={{color: "red"}}>{error}</p>}
    </form>
  );
}

ReactDOM.createRoot(document.getElementById('root')).render(<App />);
  

Por favor ingresa un email v谩lido.


4️⃣ Buenas pr谩cticas al manejar el submit

  • ✅ Siempre usar event.preventDefault() para evitar recargas innecesarias.
  • ✅ Mantener los inputs sincronizados con el state.
  • ✅ Validar los datos antes de procesarlos.
  • ✅ Usar un solo handleSubmit centralizado para formularios complejos.
  • ✅ Mostrar feedback al usuario si los datos son incorrectos.

Publicar un comentario

0 Comentarios