Hoy aprenderás API Context y:
- Verás como comunicar componentes de padre a hijo, y de hermano a hermano, es una estructura común y que estoy seguro la tendrás en tu proyecto, si o si.
- Identificar de que componente viene un dato.
- Como se propaga la información entre tus componentes.
- Verás en acción las tools de React.
Repositorio
- Puedes descargar el código que se encuentra en la rama api-context
- O simplemente puedes clonar el repositorio y posicionarte en la rama api-context
git clone https://github.com/EWebik/react-js.git
git checkout api-context
¿Qué es Context en React?
Context es una forma de comunicación del árbol de componentes en React, ya que, nos evita pasar propiedades (props) de forma manual por cada nivel de componentes que tenga nuestro árbol.
Funcionamiento de Context
Recordemos que por lo regular en una aplicación hecha en React los datos se propagan de los componentes padres a los hijos a través de las pops.
Si bien, podemos hacer aplicaciones grandes utilizando este método de propagación de datos, llegará el momento en que el código se volverá muy complicado de leer y sobre todo de mantener, ya que, esta propagación se realiza por cada nivel.
El funcionamiento de Context permite realizar una propagación de datos entre componentes sin que de forma explicita tengamos que asignar propiedades a los componentes por cada nivel.
Lo anterior nos permite crear aplicaciones escalables, sin alterar el hecho de que la información fluye de componentes padres a hijos.
¿Cuándo deberías usar Context?
Esto realmente varía dependiendo del tipo de aplicación que deseas desarrollar, no obstante, si requieres:
- Comunicar una gran cantidad de componentes.
- Comunicar componentes hermanos.
- Si existen componentes intermedios que no requieren hacer uso implícito de propiedades.
- Etc.
Ventajas de utilizar Context
- Puedes comunicar una gran cantidad de componentes que se encuentran en diferentes niveles.
- Aislamiento de componentes.
- Código mas legible.
- Concentración de actualización de datos
Desventajas de utilizar Context
- Utilizar Context puede limitar la reutilización de componentes.
Excelente, en este punto ya tienes bastante información de este concepto, ahora pasemos a ver como aplicarlo.
API Context
React libero desde la versión 16 una forma de propagación de datos a través de la utilización del Conext, no obstante, ahora se tiene una versión antigua y la versión que se recomienda utilizar.
En este post, solo veremos la nueva versión y la que actualmente recomienda la documentación oficial de React, al momento de la publicación de este post.
React.createContext
Bien, la API Context, provee un método que nos permite utilizar ciertos componentes que nos ayudan a la propagación de información.
Con React.createContext creamos un objeto que nos permite definir un:
Context.Provider
Cuando definimos Context, este viene con un componente Provider, y todo componente que se suscriba a el, podrá acceder a su contexto.
Características de Context.Provider
- Acepta una propiedad de nombre value, la cual sera propagada a todos los componentes consumidores o suscritos a el.
- Puede o no estar conectado a muchos componentes denominados consumidores.
- Puede existir anidación, con la intención de sobreescribir valores de los niveles más bajos del árbol de componentes.
- Los componentes suscritos son capaces de detectar cuando hay un cambio en el contexto y actualizan la DOM.
Context.Consumer
Es un componente de React que se suscribe a un componente Provider con la intención de detectar cambios dentro de sus contexto.
Características de Context.Consumer
- Requiere de una función como hijo principal.
- Dicha función es capaz de recibir el valor del contexto actual, y retorna un elemento, o mejor dicho, un nodo de React.
- El valor recibido es igual a la propiedad value del Provider al que este suscrito, es decir, el mas cercano, ya que recuerda que React soporta anidación de Provider.