Para complementar esta clase y por qué hay métodos que se dejaron de usar?
.
Antes React utilizaba muchos más metodos para actualizar el estado (siguiente imagen) pero en algun momento a lo mejor se dieron cuenta que era muy complicado porque introducía mucha mas complejidad, codigo repetido y causaba mucha confusión debido a que habían muchos metodos similares, dejo el ciclo de vida con todos los métodos utilizados anetiormente a continuación:
.
Ahora este ciclo de vida se ha reducido y ya no hay tantos pasos para hacer una actualización de estado, por lo que es sencillo entender mas fácilmente cómo se actualiza React, ya no hay tantos pasos intermedios y ya no tendríamos que escribir tanto código si siguieramos utilizando las clases para escribir código. Ya que se han marcado que ya no se deberían usar algunos métodos. Este es el ciclo de vida que se usa ahora:
.
Ahora bien useEffect()
recoge lo que hace componentDidMount()
, componentDidUpdate()
, y componentWillUnmount()
, es decir, que useEffect()
se encarga de ejecutar un función cuando nuestro componente se va a mostrar ya sea por una actualización o sencillamente porque es la primera vez que se va a mostrar. Si nos fijamos bien componentWillUnmount()
es la encargada de eliminar el componente de nuestra interfaz de usuario pues bien con useEffect()
tambien se puede utilizar para ejecutar una función una vez nuestro componente se vaya a eliminar esto es útli para: eliminar eventos, hacer una petición al servidor para guardar algo o limpiar algun temporizador. Aunque no se si sea la historia oficial de React 😛 imagino que eso fue lo que pensaron los ingenieros.
.
Pues bien para hacer una comparación de lo que trabajar con clases y useEffect tenemos tres opciones:
.
componentDidMount()
Ejecutar algo una vez el componente se inicializa:
useEffect( () => {
// Algo que se ejecuta dentro
}, []); //Los corchetes para indicar que se ejecute solo la primera vez
.
componentDidUpdate()
Ejecutar algo en alguna actualización del estado:
useEffect( () => {
// Algo que se ejecuta dentro
}, [dependencia]); //Se ejecuta cada vez que la dependencia cambia
componentWillUnmount()
Ejecuta algo cuando el componente se va a dejar de mostrar
useEffect( () => {
window.addEventListener('mousemove', () => {});
// Una función que se ejecuta despues de que el componente se elimine
return () => {
window.removeEventListener('mousemove', () => {}) //Elimina el evento
}
}, []);
.
Por último añadir que no se debería usar useEffect sin el arreglo de dependencias (el que se pone al final). Ya que estaríamos ejecutando todo lo que hay dentro en cada nuevo render por lo que agregaríamos calculos que a lo mejor nos podríamos ahorrar.
.
Eso fue todo, espero que te haya gustado Nunca pares de aprender 💚
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?