#React
useEffect y los estados del ciclo de vida de un componente.
Son comparables? Funcionan igual? Es uno del reemplazo del otro?.
No, no, y no, pero ¿por qué?
Intentaré resumirlo en este breve nuevo hilo 🧵
Los estados del ciclo de vida son una definición y concepto utilizados en los componentes de clase, esos definidos antes del advenimiento de hooks utilizando la sintaxis `class`
Estos componentes implementan algunos métodos que te permiten ejecutar lógica en ciertos "momentos". Y esto es importante. La ejecución de esta lógica esta relacionada con un momento particular del proceso de renderizado de un componente.
El hook useEffect por su parte si bien puede efectuar las mismas funciones que algunos métodos del ciclo de vida no son directamente comparables (y no debería hacerse) ya que el concepto y modelo mental tras su implementación es diferente.
useEffect se trata sobre *sincronizar* el estado interno de un componente con algún estado externo, por ejemplo obtener datos desde una api o modificar algo en el DOM.
useEffect ejecuta un efecto (side effect) definido como primer argumento a modo de callback
Este efecto es ejecutado cada vez que uno de los valores del arreglo de dependencias (segundo parámetro) ha cambiado.
Y eso es todo!. El efecto no se ejecuta en relación a un momento del renderizado, ergo, no hay ejecución al montar o recibir props. Solo..
El efecto sólo se ejecuta cuando una dependencia cambia, he ahí la importancia de hacerle caso al plugin de eslint npmjs.com/package/eslint… y no saltarse la definición de dependencias.
¿Entonces cuál es la gran diferencia?
El gran cambio aquí es que a la hora de definir tu componente no debes pensar en el cuando (en relación al tiempo) se ejecutará el efecto, si no, en el por qué el efecto se ejecuta (cambio en una dependencia). matiashernandez.dev/que-son-los-ho…
Y matiashernandez.dev/algunos-errore…
Finalmente si bien puede que te haga sentido hacer la comparación y relación con la implementación del ciclo de vida esto puede ser detrimental ya que puede llevar a malas prácticas en su implementación, cómo el no uso del arreglo de dependencias u obviar algunas.
Para aprender hooks, y en particular useEffect, debes dejar de compararlo con la forma previa, sobre todo si tan sólo estás comenzando con #React
Si estás comenzando con #React, sigue atento al curso "Pensando en React" para @eggheadio que está en progreso!!
Únete al newsletter para mantenerte al tanto. matiashernandez.ck.page
Una más sobre React useEffect.
Por que el arreglo de dependencias es importante? Y por que si no escribo alguna aparece un warning?
Ayer hablamos se la relación entre este hook y los métodos del ciclo de vida en un hilo y este post matiashernandez.dev/react-useeffec…
El hook useEffect recibe dos argumentos, una funcion/callback que define el efecto deseado y un listado/arreglo de valores que definen las dependencias del efecto.
Estas dependencias indican cuando o más bien por qué el efecto es emitido/ejecutado.
Internamente useEffect "observa" este listado de dependencias y cuando uno de los valores de ellas cambia el efecto es emitido.
El equipo de React provee un plugin de eslint que ayuda a identificar cuando hay dependencias no identificadas reactjs.org/docs/hooks-faq…
Ya fue la @nextconf y fue muy buena pero hubo un tema que salió a la luz durante y después el evento y que ha dado mucho que hablar. Y también tengo una opinión.
¿Las conferencias son para que los genios sigan mostrándose como genios? ¿Es necesario cuota de diversidad? 🧵
Primero, personalmente creo que las conferencias son espacios para mostrar el trabajo de otros, para compartir lo aprendido y aumentar así el conocimiento de la comunidad.
Todos tenemos una voz diferente para comunicar y todos tenemos algo que decir.
esto es algo que he aprendido muy bien gracias a las comunidades @eggheadio@partycorginetwk y @FrontEndCafe
La idea es aumentar la visiblidad de todo quien quiera participar y no seguir concentrando atención en los mismos actores de siempre.
Cuál es la diferencia entre #React y #ReactNative?
Una pregunta completamente valida sobre todo si estás comenzando.
Bueno, son conceptualmente lo mismo, pero... 🧵
Ambos nacen de la misma idea de utilizar un modelo de componentes como abstracción para definir una interfaz de usuario.
Ambos utilizan la misma "tecnología" base que es el "core" de #React., el "reconciler" es.reactjs.org/docs/reconcili…, manejo de estado, props, etc.
Similares en sintaxis: ambos son "solo javascript" y utilizan JSX para definir sus componentes (y evitar tener que escribir React.createElement cada vez).
Pero se diferencian en el "engine" en donde se ejecutan.