En HTML normal, el navegador controla el valor del input. Tú escribes, el DOM se actualiza, y si quieres leer el valor, le preguntas al DOM con document.querySelector. Eso es un input no controlado.
En React, le damos la vuelta: React controla el valor del input a través del estado. Esto es un input controlado.
Un input controlado funciona con un ciclo de tres pasos:
En código:
value={nombre} → React decide qué muestra el inputonChange se dispara con el nuevo valorsetNombre actualiza el estadoAl controlar el input, ganas superpoderes:
Para formularios con varios campos, tienes dos opciones:
Simple y directo. Ideal para formularios pequeños.
Más escalable para formularios grandes. [e.target.name] es una propiedad computada — usa el atributo name del input como clave del objeto.
e.preventDefault() es crucial: sin él, el formulario recarga la página (comportamiento nativo de HTML). En una SPA con React, no queremos eso.
Crea un formulario de registro con:
value y onChange)onSubmit en el <form> que llame a e.preventDefault() y muestre los datos con alertPrueba a escribir en los campos y enviar el formulario.
Los formularios controlados te dan control total sobre los datos del usuario. Es más código que el HTML puro, pero a cambio tienes validación, transformación y control absoluto sobre cada campo.