Gestión de Efectos Secundarios con el Hook useEffect
El hook useEffect permite sincronizar el componente con factores o servicios externos, incluyendo la obtención de datos, suscripciones, cambios manuales, entre otros.
Sintaxis:
El primer argumento (setup) es una función flecha que se ejecutará después de cada renderizado. El segundo argumento (dependencies) es un arreglo opcional de dependencias. Si se proporcionan las dependencies, el efecto solo se volverá a ejecutar si alguna de las dependencias ha cambiado desde el último renderizado. Si se omite el arreglo de dependencias, el efecto se ejecutará después de cada renderizado.
useEffect(setup, dependencies)
Dado que sabemos que setup debe ser una función flecha y que dependencies debe ser un arreglo, obtenemos el siguiente registro del hook useEffect.
useEffect(() => {
// Something that we need to do
// after the component is rendered or updated
}, [<optional_dependencies>])
Nota
Los componentes de React suelen depender de la combinación de los hooks
useEffectyuseState. Estos hooks funcionan conjuntamente para gestionar el estado y los efectos secundarios dentro de los componentes.
Ejemplo 1:
Creación del componente Articles, que utilizará el hook useEffect para asignar datos al estado articles. Esta es una excelente oportunidad para explorar la potente combinación de hooks de React.
import { useEffect, useState } from "react";
import fetchData from "../service/api";
const Articles = () => {
const [articles, setArticles] = useState([]);
useEffect(() => {
fetchData()
.then((resp) => {
setArticles(resp.jokes);
})
.catch((error) => {
console.error(error);
});
}, []);
return (
// Render some markup based on the articles data
);
};
Dentro de este componente, utilizamos el hook useEffect para asegurar que el estado articles se llene con datos. Como se mencionó anteriormente, la función useEffect se ejecuta después de cada renderizado, garantizando que los datos se mostrarán al usuario si se obtienen. Esto asegura una experiencia de usuario fluida con contenido actualizado.
Explicación línea por línea:
- Línea 1: Se importan los hooks
useEffectyuseStatede la biblioteca React para aprovechar su funcionalidad; - Línea 2: Se importa la función
fetchDatadesde "../service/api". Esta función se encarga de realizar una solicitud a la API y obtener datos; - Línea 4: El componente
Articlesse define utilizando la sintaxis convencional de función; - Línea 5: Se inicializa el estado usando el hook
useState, representando el valor inicial de la variablearticles. En este ejemplo, es un arreglo vacío; - Líneas 7-15: El caso de uso real del hook
useEffect;- Línea 7 y línea 15: es la sintaxis. Así es como se utiliza;
- Línea 8: se llama a la función
fetchData. Se espera que esta función realice una solicitud a la API y retorne una promesa; - Líneas 9-11: Cuando la promesa se resuelve (bloque
then), recibe un objetoresp. Los datos se extraen derespusandoresp.jokes, que se asigna al estadoarticlesmediantesetArticles; - Líneas 12-14: Si ocurre un error durante la solicitud a la API (en el bloque
catch), se registra en la consola usandoconsole.error.
- Líneas 17-19: Se renderiza el marcado del componente.
Código completo de la aplicación:
Ejemplo 2:
Creemos el componente Counter para rastrear un valor de counter. El objetivo es registrar el valor de la variable counter cada vez que cambie. Para lograr esto, utilizaremos el hook useEffect con un array de dependencias que contiene la variable counter.
import React, { useState, useEffect } from "react";
const Counter = () => {
const [count, setCount] = useState(0);
useEffect(() => {
console.log("Count has changed:", count);
}, [count]);
const handleIncrement = () => {
setCount(count + 1);
};
return (
<div>
<p>Count: {count}</p>
<button onClick={handleIncrement}>Increment</button>
</div>
);
};
Explicación línea por línea:
- Línea 1: Se importan los hooks
useEffectyuseStatede la librería React para aprovechar su funcionalidad; - Línea 3: La sintaxis convencional de función define el componente "Counter";
- Línea 4: Se inicializa el estado utilizando el hook
useState, representando el valor inicial de la variablecount. En este ejemplo, es0; - Líneas 6-8: El caso de uso real del hook
useEffect;- Línea 7: esta lógica se ejecutará cada vez que cambie el valor en el array de dependencias. En este caso, es la variable
count; - Línea 8: array de dependencias. Se indica a React que cuando cambie el valor de la variable
count, ejecute el código dentro de la función del hookuseEffect.
- Línea 7: esta lógica se ejecutará cada vez que cambie el valor en el array de dependencias. En este caso, es la variable
- Líneas 14-19: Se renderiza el marcado del componente.
Código completo de la aplicación:
Por favor, toma un momento para inspeccionar la consola y observar la lógica de ejecución de la función flecha dentro del hook useEffect. La función flecha se ejecuta primero en el renderizado inicial y luego se llama nuevamente cada vez que cambia el valor de la variable counter. Puedes verificar este comportamiento observando los registros correspondientes en la consola.
1. ¿Cuál es el propósito del hook useEffect en React?
2. ¿Cuáles son los dos argumentos principales que recibe el hook useEffect?
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Awesome!
Completion rate improved to 2.17
Gestión de Efectos Secundarios con el Hook useEffect
Desliza para mostrar el menú
El hook useEffect permite sincronizar el componente con factores o servicios externos, incluyendo la obtención de datos, suscripciones, cambios manuales, entre otros.
Sintaxis:
El primer argumento (setup) es una función flecha que se ejecutará después de cada renderizado. El segundo argumento (dependencies) es un arreglo opcional de dependencias. Si se proporcionan las dependencies, el efecto solo se volverá a ejecutar si alguna de las dependencias ha cambiado desde el último renderizado. Si se omite el arreglo de dependencias, el efecto se ejecutará después de cada renderizado.
useEffect(setup, dependencies)
Dado que sabemos que setup debe ser una función flecha y que dependencies debe ser un arreglo, obtenemos el siguiente registro del hook useEffect.
useEffect(() => {
// Something that we need to do
// after the component is rendered or updated
}, [<optional_dependencies>])
Nota
Los componentes de React suelen depender de la combinación de los hooks
useEffectyuseState. Estos hooks funcionan conjuntamente para gestionar el estado y los efectos secundarios dentro de los componentes.
Ejemplo 1:
Creación del componente Articles, que utilizará el hook useEffect para asignar datos al estado articles. Esta es una excelente oportunidad para explorar la potente combinación de hooks de React.
import { useEffect, useState } from "react";
import fetchData from "../service/api";
const Articles = () => {
const [articles, setArticles] = useState([]);
useEffect(() => {
fetchData()
.then((resp) => {
setArticles(resp.jokes);
})
.catch((error) => {
console.error(error);
});
}, []);
return (
// Render some markup based on the articles data
);
};
Dentro de este componente, utilizamos el hook useEffect para asegurar que el estado articles se llene con datos. Como se mencionó anteriormente, la función useEffect se ejecuta después de cada renderizado, garantizando que los datos se mostrarán al usuario si se obtienen. Esto asegura una experiencia de usuario fluida con contenido actualizado.
Explicación línea por línea:
- Línea 1: Se importan los hooks
useEffectyuseStatede la biblioteca React para aprovechar su funcionalidad; - Línea 2: Se importa la función
fetchDatadesde "../service/api". Esta función se encarga de realizar una solicitud a la API y obtener datos; - Línea 4: El componente
Articlesse define utilizando la sintaxis convencional de función; - Línea 5: Se inicializa el estado usando el hook
useState, representando el valor inicial de la variablearticles. En este ejemplo, es un arreglo vacío; - Líneas 7-15: El caso de uso real del hook
useEffect;- Línea 7 y línea 15: es la sintaxis. Así es como se utiliza;
- Línea 8: se llama a la función
fetchData. Se espera que esta función realice una solicitud a la API y retorne una promesa; - Líneas 9-11: Cuando la promesa se resuelve (bloque
then), recibe un objetoresp. Los datos se extraen derespusandoresp.jokes, que se asigna al estadoarticlesmediantesetArticles; - Líneas 12-14: Si ocurre un error durante la solicitud a la API (en el bloque
catch), se registra en la consola usandoconsole.error.
- Líneas 17-19: Se renderiza el marcado del componente.
Código completo de la aplicación:
Ejemplo 2:
Creemos el componente Counter para rastrear un valor de counter. El objetivo es registrar el valor de la variable counter cada vez que cambie. Para lograr esto, utilizaremos el hook useEffect con un array de dependencias que contiene la variable counter.
import React, { useState, useEffect } from "react";
const Counter = () => {
const [count, setCount] = useState(0);
useEffect(() => {
console.log("Count has changed:", count);
}, [count]);
const handleIncrement = () => {
setCount(count + 1);
};
return (
<div>
<p>Count: {count}</p>
<button onClick={handleIncrement}>Increment</button>
</div>
);
};
Explicación línea por línea:
- Línea 1: Se importan los hooks
useEffectyuseStatede la librería React para aprovechar su funcionalidad; - Línea 3: La sintaxis convencional de función define el componente "Counter";
- Línea 4: Se inicializa el estado utilizando el hook
useState, representando el valor inicial de la variablecount. En este ejemplo, es0; - Líneas 6-8: El caso de uso real del hook
useEffect;- Línea 7: esta lógica se ejecutará cada vez que cambie el valor en el array de dependencias. En este caso, es la variable
count; - Línea 8: array de dependencias. Se indica a React que cuando cambie el valor de la variable
count, ejecute el código dentro de la función del hookuseEffect.
- Línea 7: esta lógica se ejecutará cada vez que cambie el valor en el array de dependencias. En este caso, es la variable
- Líneas 14-19: Se renderiza el marcado del componente.
Código completo de la aplicación:
Por favor, toma un momento para inspeccionar la consola y observar la lógica de ejecución de la función flecha dentro del hook useEffect. La función flecha se ejecuta primero en el renderizado inicial y luego se llama nuevamente cada vez que cambia el valor de la variable counter. Puedes verificar este comportamiento observando los registros correspondientes en la consola.
1. ¿Cuál es el propósito del hook useEffect en React?
2. ¿Cuáles son los dos argumentos principales que recibe el hook useEffect?
¡Gracias por tus comentarios!