¿Cómo controlar formularios en React?

Contenido del Bootcamp Dirigido por: | Última modificación: 10 de octubre de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

Cuando se trata de interactuar con los usuarios y recopilar datos valiosos, controlar formularios en React es una habilidad esencial que todo desarrollador debe dominar.

En este artículo, nos sumergiremos en el fascinante mundo de los formularios en React, explorando los conceptos de componentes controlados, componentes no controlados, patrones de diseño y mucho más.

Controlar formularios en React: Componentes controlados

Uno de los conceptos clave para controlar formularios en React es el uso de componentes controlados. En un componente controlado, el valor del elemento de entrada (como un campo de texto) está vinculado al estado de React. Esto significa que React controla el valor del elemento y cualquier cambio en ese valor se reflejará en el estado de la aplicación.

Para crear un componente controlado en React, simplemente necesitas:

import React, { useState } from 'react'; 
function ControlledForm() { 
const [value, setValue] = useState(''); 
const handleChange = (event) => { 
setValue(event.target.value); 
}; 
return ( 
<input type="text" value={value} onChange={handleChange} /> 
); 
}

En este ejemplo, el valor del campo de texto se controla mediante el estado value y se actualiza cada vez que el usuario introduce o cambia el texto.

Componentes no controlados: Flexibilidad y rendimiento

Aunque los componentes controlados son una forma poderosa de controlar formularios en React, a veces es necesario utilizar componentes no controlados para lograr una mayor flexibilidad y rendimiento. Los componentes no controlados permiten que el DOM maneje el valor del elemento de entrada directamente, lo que puede ser útil en situaciones específicas.

import React, { useRef } from 'react'; 
function UncontrolledForm() { 
const inputRef = useRef(null); 
const handleSubmit = (event) => { 
event.preventDefault(); 
alert(`El valor del campo es: ${inputRef.current.value}`); 
}; 
return ( 
<form onSubmit={handleSubmit}> 
<input type="text" ref={inputRef} /> 
<button type="submit">Enviar</button> 
</form> 
); 
}

En este caso, el valor del campo se obtiene directamente del DOM a través de inputRef.current.value.

Patrones de diseño para controlar formularios en React

Al desarrollar aplicaciones más complejas, es importante considerar patrones de diseño efectivos para controlar formularios en React. Algunos patrones comunes son:

Patrón formulario usando estado local

En este patrón, cada campo del formulario tiene su propio estado local. Cada vez que se realiza un cambio en un campo, se actualiza su estado local y se guarda en un objeto que representa el estado del formulario completo.

import React, { useState } from 'react'; 
function FormWithLocalState() { 
const [formData, setFormData] = useState({ name: '', email: '' }); 
const handleChange = (event) => { 
const { name, value } = event.target; 
setFormData({ ...formData, [name]: value }); 
}; 
const handleSubmit = (event) => { 
event.preventDefault(); 
// Enviar formData al servidor o realizar acciones necesarias. 
}; 
return ( 
<form onSubmit={handleSubmit}>
 <input type="text" name="name" value={formData.name} onChange={handleChange} /> <input type="email" name="email" value={formData.email} onChange={handleChange} /> <button type="submit">Enviar</button>
 </form> 
); 
}

Patrón formulario usando Context API

La Context API de React permite compartir datos entre componentes sin necesidad de pasar propiedades manualmente. Puedes usar Context API para administrar el estado del formulario y proporcionar acceso a él en cualquier componente que lo necesite.

Nuestro formulario en React

Ahora que hemos explorado los fundamentos del control de formularios en React, es hora de aplicar estos conocimientos en la creación de un formulario completo. Imagina que estamos construyendo un formulario de registro de usuario que solicita el nombre y el correo electrónico.

import React, { useState } from 'react'; 
function UserRegistrationForm() { 
const [formData, setFormData] = useState({ name: '', email: '' }); 
const handleChange = (event) => { 
const { name, value } = event.target; 
setFormData({ ...formData, [name]: value }); 
}; 
const handleSubmit = (event) => { 
event.preventDefault(); 
// Aquí puedes enviar formData al servidor o realizar otras acciones necesarias. console.log('Formulario enviado:', formData); 
}; 
return ( 
<form onSubmit={handleSubmit}>
 <div>
 <label htmlFor="name">Nombre:</label> 
<input type="text" id="name" name="name" value={formData.name} onChange={handleChange} />
 </div>
 <div>
 <label htmlFor="email">Correo Electrónico:</label>
 <input type="email" id="email" name="email" value={formData.email} onChange={handleChange} />
 </div>
 <button type="submit">Registrarse</button>
 </form> 
); 
}

En resumen, controlar formularios en React es una habilidad esencial para cualquier desarrollador web que busque crear aplicaciones interactivas y eficientes. También es importante que conozcas otras funcionalidades de los formularios en React, como puede ser la creación de objetos FormData en React.

Controlar formularios en React es solo una de las muchas habilidades que puedes aprender en el Full Stack Bootcamp de KeepCoding. Si estás interesado en convertirte en un profesional del sector tecnológico y disfrutar de salarios competitivos y estabilidad laboral, este bootcamp es tu puerta de entrada al emocionante mundo del desarrollo web.

En el bootcamp de KeepCoding, aprenderás a dominar no solo React, sino también otras tecnologías esenciales, como JavaScript, Node.js, MongoDB y mucho más. Nuestro enfoque práctico y orientado a proyectos te preparará para enfrentarte a los desafíos del mundo real y te brindará las habilidades necesarias para triunfar en la industria de la tecnología. ¡Pide información ahora y transforma tu vida!

Alberto Casero

Alberto Casero es CTO en Watium, Fundador de Kas Factory & Coordinador del Bootcamp en Desarrollo Web.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Desarrollo Web

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado