Diferencias entre Componentes de Clase y Función en React
Clase 3 de 19 • Curso de React.js: Manejo Profesional del Estado
Resumen
¿Cómo se manejan las props en React?
El manejo de props en React es una habilidad fundamental para crear componentes reutilizables y dinámicos. Cuando llamamos a un componente dentro de otro, podemos enviarle propiedades de la misma manera que pasamos atributos a etiquetas HTML. Esto es idéntico tanto para componentes creados con clases como con funciones utilizando React Hooks.
- Components funcionales: Reciben props directamente en sus parámetros, y podemos destructurarlas para utilizarlas fácilmente en nuestro código.
- Components creados como clases: Accedemos a las props utilizando
this.props
. Esto nos permite trabajar con estas propiedades dentro de cualquier método del componente.
Ambos métodos permiten reflejar cambios dinámicos en la interfaz cada vez que cambian las props.
¿Cómo se gestiona el estado en componentes con React Hooks?
El estado en los componentes funcionales de React se gestiona utilizando useState
, una herramienta fundamental de React Hooks. Con useState
, definimos estados de manera más concreta y directa:
- Definición del estado: Usamos la función
useState
para declarar un array que contiene el estado actual y una función para actualizarlo.
const [estado, setEstado] = React.useState(estadoInicial);
- Uso y actualización: Dentro de la interfaz, podemos emplear el estado como cualquier propiedad. Para actualizarlo, utilizamos la función actualizadora (
setEstado
), que puede tomar el valor actual y devolver una nueva versión del estado.
Este manejo es más sencillo y claro, ofreciendo la flexibilidad de definir múltiples estados de forma individual y con nombres personalizados, facilitando el trabajo en equipo y el mantenimiento del código.
¿Cómo se gestionan los estados en componentes de clase?
El enfoque para manejar el estado en componentes creados con clases difiere notablemente. Debemos definir un estado único, this.state
, que contiene un objeto donde se agrupan todas las propiedades del estado:
- Constructor: Creamos el estado dentro del constructor del componente y, si el componente extiende de
React.Component
, debemos asegurarnos de llamar asuper(props)
antes de modificarthis
.
constructor(props) {
super(props);
this.state = { propiedadInicial: valor };
}
- Actualización del estado: Utilizamos el método
this.setState()
para cambiar el estado. Este enfoque acepta un objeto como argumento para especificar los cambios.
this.setState({ propiedad: nuevoValor });
- Funciones para actualizar el estado: Es posible también pasar una función a
setState
que tome el estado previo como argumento para generar actualizaciones más complejas y controladas.
Este método, aunque menos flexible que los hooks, permite aprovechar la herencia de React.Component
, facilitando el uso de métodos predefinidos de React.
¿Cómo implementar el cambio de estado para mostrar mensajes de error?
Finalmente, uno de los casos de uso más comunes al trabajar con el estado en React es mostrar u ocultar mensajes, como notificaciones de error, basadas en condiciones del estado:
-
Con React Hooks y
useState
:- Definimos un estado inicial para el error.
- Utilizamos una función, vinculada a un evento (por ejemplo, un clic), que invierta el valor del estado (
true
ofalse
), controlando así cuándo se muestra un mensaje de error.
-
En componentes de clase:
- Configuramos un estado inicial en
this.state
. - Creamos un método que utiliza
this.setState()
para cambiar el estado en respuesta a eventos.
- Configuramos un estado inicial en
Ambos métodos son eficaces para manipular dinámicamente la UI en función del estado. Aprender a usar estos patrones es clave para crear aplicaciones React robustas e interactivas.
Estas diferencias entre componentes funcionales y de clase, en particular en el manejo de props y estados, pueden influir significativamente en cómo estructuramos y mantenemos nuestro código React.