useEffect en React

Autor: | Última modificación: 29 de agosto de 2022 | Tiempo de Lectura: 3 minutos
Temas en este post:

React es una librería JavaScript que nos permite simplificar y unificar el código de JavaScript con el código de HTML para crear interfaces de usuario. Estas interfaces se crean específicamente en el contexto del desarrollo de aplicaciones de una sola página o SPA (single page application). Para permitirnos crear este código, la sintaxis de React usa elementos, componentes, estados y efectos. En este post, te enseñaremos cómo funciona useEffect en React, el comando responsable de crear efectos en esta poderosa librería.

¿Qué es useEffect en React?

En nuestro post sobre el estado y ciclo de vida de componentes en React, hablamos de las distintas fases o etapas de un componente tipo clase. En este tipo de componentes, existe una fase de montado mounting, en la que se inicializa el componente en el DOM y ocurre un primer render. Luego, están la fases de actualización updating, donde el estado interno se actualiza, y de desmontado unmounting, donde el componente desaparece del DOM.

En la fase de montado para los componentes de tipo clase, existe una función llamada componentDidMount. Cuando React se basaba más en una programación orientada a objetos, esta función nos permitía definir secciones de código a ejecutar justo después del primer render. En los componentes de tipo función actuales, esto lo podemos hacer con el useEffect en React.

En nuestro post sobre los efectos en React, encontrarás un ejemplo de cómo se utiliza el useEffect en React para crear un trozo de código que se ejecuta después del primer render. Allí, también encontrarás la explicación sobre qué son y cómo se utilizan los efectos, uno de los elementos más importantes de la sintaxis de React.

Entonces, ¿qué es el useEffect en React? useEffect en React es un tipo de hook que se incorporó en la versión de React 16.8. Como su nombre indica, este hook nos permite definir efectos.

Los efectos en esta librería de JavaScript nos permiten ejecutar un trozo de código según el momento en el que se encuentre el ciclo de vida de nuestro componente. Antes ya hemos visto que podemos usarlo para ejecutar una acción específicamente después del primer render. Sin embargo, los efectos no se quedan ahí.

Con el hook useEffect en React, también podemos ejecutar trozos en las otras fases del ciclo de vida, ya sea en updating o en unmounting. En este orden de ideas, el hook useEffect en React equivale a una combinación de las funciones componentDidMount, componentDidUpdate y componentWillUnmount.

¿Cómo se usa el useEffect en React?

Una forma de utilizar el useEffect en React es para insertar funciones que queremos que se salgan del flujo de renderizado de React. Entonces, supongamos que tenemos un proyecto en el que queremos crear un reloj. Para ello, hemos creado una función tick que guarda la hora actual en un estado. Esta función se actualiza cada segundo gracias a un método setInterval.

Sin embargo, como nuestra función tiene un estado que se modifica, estamos provocando un nuevo render cada segundo. Esto genera que nuestro método setInterval y su ID se monten y desmonten del DOM cada vez, creando un nuevo método. Para evitar esto, podemos sacar este trozo de código del flujo de renderizado de React de la siguiente manera:

React.useEffect (() => {

const tick = () => {

setNow (new Date ().toLocaleTimeString());

};

const id = setInterval (tick, 1000);

return () => {

clearInterval (id);

};

}, [ ]);

El código anterior se ejecuta después del primer render y equivale de alguna manera a la función componentDidMount, pues funciona como un efecto. El segundo parámetro que le hemos pasado ([ ]) es un array vacío y nos permite definir que el código se ejecute solo después del primer render.

Ahora, el hook useEffect en React también puede devolvernos un elemento. En este caso, la palabra clave return define que obtendremos de vuelta la función clearInterval, que en nuestro caso usaremos para limpiar el intervalo. ¿Cuándo se ejecuta esta función si está dentro de un efecto? Pues justo antes de que el componente se desmonte del DOM. Es decir, equivaldría a la función componentWillUnmount.

¿Cuál es el siguiente paso?

Después de leer este post, sabes exactamente qué es el comando useEffect en React y cómo funciona, por lo que estás un paso más cerca de dominar esta librería JavaScript. Ahora, el siguiente paso para poder desarrollar proyectos con ella es dedicarte por completo a tu aprendizaje. Por ello, te recomendamos nuestro Desarrollo Web Full Stack Bootcamp, un programa de formación íntegra e intensiva donde aprenderás a dominar herramientas de programación para la web, como React, JavaScript, CSS y HTML. ¿A qué esperas para dar el siguiente paso y priorizar tu aprendizaje? ¡Inscríbete ya!

👉 Descubre más del Desarrollo Web Full Stack Bootcamp ¡Descarga el temario!

👉 Prueba el Bootcamp Gratis por una Semana ¡Empieza ahora mismo!

👉 Conoce nuestros otros Bootcamps en Programación y Tecnología

[email protected]

¿Sabías que hay más de 40.000 vacantes para desarrolladores de software sin cubrir en España? 

En KeepCoding llevamos desde 2012 guiando personas como tú a áreas de alta empleabilidad y alto potencial de crecimiento en IT con formación de máxima calidad.

 

Porque creemos que un buen trabajo es fuente de libertad, independencia, crecimiento y eso ¡cambia historias de vida!


¡Da el primer paso! 

¿Sabías que hay más de 40.000 vacantes para desarrolladores web sin cubrir en España? 

En KeepCoding llevamos desde 2012 guiando personas como tú a áreas de alta empleabilidad y alto potencial de crecimiento en IT con formación de máxima calidad.

 

Porque creemos que un buen trabajo es fuente de libertad, independencia, crecimiento y eso ¡cambia historias de vida!


¡Da el primer paso!