Introducción a los Hooks
Los Hooks son una característica relativamente nueva en React (introducida en la versión 16.8) que permite usar el estado y otras características de React sin escribir una clase. Los Hooks son funciones que permiten "engancharse" a las características de React desde componentes funcionales.
¿Por qué usar Hooks?
- Simplicidad: Los componentes funcionales son más simples y fáciles de entender que los componentes de clase.
- Reutilización de lógica de estado: Los Hooks permiten reutilizar la lógica de estado entre componentes sin cambiar la jerarquía de componentes.
- Separación de preocupaciones: Los Hooks permiten separar la lógica relacionada con el estado y los efectos secundarios de la lógica de renderizado.
Reglas de los Hooks
Antes de profundizar en los Hooks, es importante conocer las reglas básicas que deben seguirse:
- Llamar Hooks solo en el nivel superior: No llames Hooks dentro de bucles, condiciones o funciones anidadas. Siempre usa Hooks en el nivel superior de tu función React.
- Llamar Hooks solo desde funciones de React: Llama Hooks solo desde componentes funcionales de React o desde tus propios Hooks personalizados.
Hook useState
El Hook useState es el más básico y se utiliza para añadir estado a un componente funcional.
Ejemplo Básico
import React, { useState } from 'react';
function Contador() {
// Declara una nueva variable de estado, que llamaremos "count"
const [count, setCount] = useState(0);
return (
<div>
<p>Has hecho clic {count} veces</p>
<button onClick={() => setCount(count + 1)}>
Haz clic
</button>
</div>
);
}
export default Contador;Explicación del Código
- Importación de useState:
useStatese importa desde React. - Declaración del estado:
const [count, setCount] = useState(0);declara una variable de estadocounty una función para actualizarlasetCount.useState(0)inicializa el estado con el valor0. - Uso del estado:
countse usa en el JSX para mostrar el número de clics. - Actualización del estado:
setCount(count + 1)se llama cuando se hace clic en el botón, incrementando el valor decount.
Hook useEffect
El Hook useEffect se utiliza para manejar efectos secundarios en componentes funcionales, como la obtención de datos, la suscripción a servicios o la manipulación del DOM.
Ejemplo Básico
import React, { useState, useEffect } from 'react';
function EjemploUseEffect() {
const [count, setCount] = useState(0);
// Similar a componentDidMount y componentDidUpdate:
useEffect(() => {
// Actualiza el título del documento usando la API del navegador
document.title = `Has hecho clic ${count} veces`;
});
return (
<div>
<p>Has hecho clic {count} veces</p>
<button onClick={() => setCount(count + 1)}>
Haz clic
</button>
</div>
);
}
export default EjemploUseEffect;Explicación del Código
- Importación de useEffect:
useEffectse importa desde React. - Uso de useEffect:
useEffectse llama dentro del componente funcional. La función pasada auseEffectse ejecuta después de que el renderizado se haya completado. - Efecto secundario: En este caso, el efecto secundario es actualizar el título del documento cada vez que
countcambia.
Ejercicio Práctico
Ejercicio
Crea un componente funcional llamado Reloj que muestre la hora actual y se actualice cada segundo.
Solución
import React, { useState, useEffect } from 'react';
function Reloj() {
const [time, setTime] = useState(new Date());
useEffect(() => {
const timerID = setInterval(() => setTime(new Date()), 1000);
// Cleanup function to clear the interval
return () => clearInterval(timerID);
}, []);
return (
<div>
<h2>La hora actual es {time.toLocaleTimeString()}</h2>
</div>
);
}
export default Reloj;Explicación del Código
- Estado inicial:
const [time, setTime] = useState(new Date());inicializa el estado con la hora actual. - Efecto secundario:
useEffectse usa para configurar un intervalo que actualiza la hora cada segundo. - Limpieza: La función de limpieza
return () => clearInterval(timerID);se asegura de que el intervalo se limpie cuando el componente se desmonte.
Conclusión
En esta sección, hemos introducido los Hooks useState y useEffect, que son fundamentales para manejar el estado y los efectos secundarios en componentes funcionales de React. Estos Hooks permiten escribir componentes más simples y reutilizables. En el próximo módulo, profundizaremos en otros Hooks importantes y cómo pueden mejorar aún más tus aplicaciones React.
Curso de React
Módulo 1: Introducción a React
- ¿Qué es React?
- Configuración del Entorno de Desarrollo
- Hola Mundo en React
- JSX: Extensión de Sintaxis de JavaScript
Módulo 2: Componentes de React
- Entendiendo los Componentes
- Componentes Funcionales vs de Clase
- Props: Pasando Datos a Componentes
- State: Gestión del Estado del Componente
Módulo 3: Trabajando con Eventos
- Manejo de Eventos en React
- Renderizado Condicional
- Listas y Claves
- Formularios y Componentes Controlados
Módulo 4: Conceptos Avanzados de Componentes
- Elevando el Estado
- Composición vs Herencia
- Métodos del Ciclo de Vida de React
- Hooks: Introducción y Uso Básico
Módulo 5: Hooks de React
Módulo 6: Enrutamiento en React
Módulo 7: Gestión del Estado
- Introducción a la Gestión del Estado
- API de Contexto
- Redux: Introducción y Configuración
- Redux: Acciones y Reductores
- Redux: Conectando a React
Módulo 8: Optimización del Rendimiento
- Técnicas de Optimización del Rendimiento en React
- Memorización con React.memo
- Hooks useMemo y useCallback
- División de Código y Carga Perezosa
Módulo 9: Pruebas en React
- Introducción a las Pruebas
- Pruebas Unitarias con Jest
- Pruebas de Componentes con React Testing Library
- Pruebas de Extremo a Extremo con Cypress
Módulo 10: Temas Avanzados
- Renderizado del Lado del Servidor (SSR) con Next.js
- Generación de Sitios Estáticos (SSG) con Next.js
- TypeScript con React
- React Native: Creación de Aplicaciones Móviles
