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:

  1. Funci贸n efecto: La funci贸n dentro de useEffect se ejecutar谩 despu茅s de que el componente se renderice.

  2. Efecto espec铆fico: Cambia el t铆tulo de la p谩gina web a "Coche true" o "Coche false".

  3. 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

  1. 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.

  2. 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

  1. Actualizar el DOM (como en nuestro ejemplo)

  2. Llamadas a APIs (fetch de datos)

  3. Suscripciones a eventos

  4. Configurar temporizadores

  5. 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