Clase 5 - Componentes II
Clase 5 - Componentes II
Componentes II
Componentes II: Introducción
Propiedades/Props
✓ Valores comunes:
○ num, bool, array, obj
✓ Funciones
✓ Componentes. Si los componentes son funciones, ¡entonces puedo pasar
componentes!
✓ Children
✓ Valores inyectados por librerías:
○ location, rutas, traducciones
Children
Children es una manera que tiene react de permitirnos proyectar/transcluir uno o más
componentes dentro otro.
Es ideal cuando:
✓ Necesitamos que un elemento quede dentro de otro, sin que sepan el uno del otro.
✓ Necesitamos implementar patrones más complejos.
Tener cuidado para evitar errores del tipo children[0] o cuando estoy utilizando un
metodo de array, si espero un grupo de children y viene uno solo.
Ciclos de vida
El ciclo de vida no es más que una serie de estados por los cuales pasa todo componente
a lo largo de su existencia.
Como vimos anteriormente los hooks son funciones que le dan funcionabilidad adicional a
nuestros componentes funcionales. ¿Cuáles y cuántos son?
✓ Hooks básicos:
○ useState: para crear un estado
○ useEffect: para controlar efectos secundarios.
○ useContext: para usar un contexto
Si en cada render provocado por un cambio de estado se ejecuta está llamada a la API
quiere decir que un cambio de estado está provocando efectos secundarios y no controlar
estos puede traernos problemas.
useEffect
useEffect va a ser el hook que nos permita controlar efectos secundarios provocados por
cambios de estados. Utilizado normalmente para sincronizar el componente con sistemas
externos.
Para completar este array de dependencias la pregunta que debo hacerme es ¿Con que
estados debo sincronizar este efecto?
useEffect(fn) // Con todos los estados
Hay que tener en cuenta que useEffect se ejecuta siempre después del renderizado y por
lo menos una vez al montar el componente.
Ahora analicemos la función del primer argumento. En esta función escribiremos el bloque de
código que deseamos sincronizar en el cuerpo y retornaremos una función, llamada función de
limpieza, que se ejecutará tantas veces como se haya ejecutado la función que la retorna. Es
decir que el proceso es simétrico.
Dado que la función se ejecutará por lo menos una vez al montar el componente la función que
se retorna se ejecutará una vez al desmontar el componente. Ahora bien, en caso de tener
dependencias de estados, la limpieza se ejecutará antes de volver a ejecutar el efecto frente a
un cambio en una de sus dependencias. Por eso siempre se ejecutará la limpieza la misma
cantidad de veces que se haya ejecutado el efecto.
*Actualmente el modo estricto de React ejecuta dos veces la función del primer
argumento. Por eso puede ser que veas dos veces un mismo console.log que se ejecutó
dentro de esta función.
Como podemos utilizar todos los useEffect que deseemos, es conveniente separar
responsabilidades. Cada useEffect encargándose de un solo efecto y limpieza.