46. useEffect - Ejemplo de uso
Tutorial: useEffect - Ejemplo de uso
馃幆 Objetivo
Aprender a utilizar el hook useEffect en React para ejecutar efectos secundarios en componentes funcionales.
馃摎 ¿Qu茅 es useEffect?
useEffect es un hook de React que te permite realizar efectos secundarios en componentes funcionales. Sustituye a los m茅todos del ciclo de vida de los componentes de clase como:
componentDidMount
componentDidUpdate
componentWillUnmount
馃殫 Ejemplo Pr谩ctico: Componente de Coche
Vamos a analizar el c贸digo proporcionado paso a paso:
1. Importaci贸n de React y Hooks
javascript
import React, { useState, useEffect } from "react";
Primero importamos useEffect junto con los otros hooks necesarios.
2. Creaci贸n del Componente
javascript
export default function Car() {
const [started, setStarted] = useState(false);
Creamos un estado started que controla si el coche est谩 encendido (true) o apagado (false).
Valor inicial: false (apagado).
3. Implementaci贸n de useEffect
javascript
useEffect(() => {
document.title = `Coche ${started}`;
}, [started]);
Explicaci贸n detallada:
Funci贸n efecto: La funci贸n dentro de useEffect se ejecutar谩 despu茅s de que el componente se renderice.
Efecto espec铆fico: Cambia el t铆tulo de la p谩gina web a "Coche true" o "Coche false".
Array de dependencias [started]:
Indica que el efecto se debe ejecutar solo cuando la variable started cambie.
Sin este array, el efecto se ejecutar铆a despu茅s de cada renderizado.
Con un array vac铆o [], solo se ejecutar铆a una vez (al montar el componente).
4. Funci贸n para Mostrar el Estado
javascript
const checkStateCar = () => {
if (started) {
return <span style={{ color: "green" }}>Encendido</span>;
}
return <span style={{ color: "red" }}>Apagado</span>;
};
Esta funci贸n devuelve un elemento visual que cambia de color seg煤n el estado del coche:
Verde: Cuando est谩 encendido
Rojo: Cuando est谩 apagado
5. Renderizado del Componente
javascript
return (
<div>
<h2>Nuestro coche est谩: {checkStateCar()} </h2>
<button
onClick={() => {
setStarted(!started);
}}
>
Encender / Apagar
</button>
</div>
);
Muestra el estado actual del coche.
Bot贸n que alterna entre encendido y apagado al hacer clic.
馃攧 Flujo de Ejecuci贸n
Renderizado inicial:
El componente se monta con started = false.
useEffect se ejecuta por primera vez → t铆tulo: "Coche false".
La interfaz muestra "Apagado" en rojo.
Usuario hace clic en el bot贸n:
setStarted(!started) cambia el estado a true.
El componente se vuelve a renderizar.
useEffect detecta que started cambi贸 → se ejecuta de nuevo.
T铆tulo actualizado a "Coche true".
La interfaz muestra "Encendido" en verde.
馃挕 Puntos Clave
Uso Correcto del Array de Dependencias
javascript
// ✅ CORRECTO: Solo se ejecuta cuando "started" cambia
useEffect(() => {
document.title = `Coche ${started}`;
}, [started]);
// ❌ SIN array: Se ejecuta despu茅s de CADA renderizado
useEffect(() => {
document.title = `Coche ${started}`;
});
// ✅ CON array vac铆o: Solo al montar el componente (como componentDidMount)
useEffect(() => {
console.log("Componente montado");
}, []);
Tipos de Efectos Comunes
Actualizar el DOM (como en nuestro ejemplo)
Llamadas a APIs (fetch de datos)
Suscripciones a eventos
Configurar temporizadores
Limpiar recursos (con funci贸n de limpieza)
馃Ч Funci贸n de Limpieza (Cleanup)
useEffect puede devolver una funci贸n de limpieza:
javascript
useEffect(() => {
// C贸digo del efecto
const interval = setInterval(() => {
console.log("Tick");
}, 1000);
// Funci贸n de limpieza (como componentWillUnmount)
return () => {
clearInterval(interval);
};
}, []);
馃幆 Conclusi贸n
En este ejemplo hemos aprendido:
C贸mo importar y usar useEffect.
La importancia del array de dependencias para controlar cu谩ndo se ejecuta el efecto.
C贸mo useEffect sustituye los m茅todos del ciclo de vida de componentes de clase.
Un caso pr谩ctico de actualizaci贸n del t铆tulo de la p谩gina basado en el estado.
Recuerda: useEffect se ejecuta despu茅s del renderizado, por lo que es ideal para efectos secundarios que no bloqueen la actualizaci贸n de la UI.
馃殌 Pr贸ximos Pasos
Experimenta a帽adiendo m谩s efectos secundarios.
Prueba a usar la funci贸n de limpieza.
Intenta combinar m煤ltiples efectos en un componente.
Practica con llamadas a APIs reales usando useEffect.
¡Ahora est谩s listo para implementar useEffect en tus proyectos de React!
Comentarios
Publicar un comentario