React Context

En una aplicación típica de React, los datos se pasan de arriba hacia abajo (de padres a hijos) a través de props, pero esto puede ser engorroso para ciertos tipos de props (por ejemplo, preferencia de configuración regional, el tema de UI) que requieren muchos componentes dentro de una aplicación.

El contextoarrow-up-right proporciona una forma de compartir valores como estos entre los componentes sin tener que pasar explícitamente una prop a través de cada nivel del árbol de componentes.

React Context

El contexto está diseñado para compartir datos que se pueden considerar "globales" para un árbol de componentes de React, como el usuario autenticado actual, el tema seleccionado o el idioma preferido.

Casos de Uso

En el siguiente ejemplo, manualmente pasamos una prop ‘theme’ para darle el estilo correspondiente al componente Button. El componente Toolbar tiene que recibir una prop "extra" para pasarla al ThemedButton, y si todos los botones de nuestra aplicación necesitan esto, es una propiedad que tendríamos que pasar por todos los componentes.

Si utilizamos el Contexto de React, podemos ahorrarnos el pasaje de props innecesarias en la jerarquía de componentes:

Api

React.createContext

Crea un objeto con dos propiedades, Provider y Consumer. Cuando React dibuje el Consumer de un contexto, leerá el valor del Provider del mismo contexto más cercano hacia arriba en el árbol de componentes. El valor por defecto solo es utilizado si no encuentra ningún Provider en la jerarquía hacia arriba.

Esa linea, es lo mismo que:

Provider

Es un componente de React que permite que Consumers debajo se puedan subscribir a los cambios en el contexto. Acepta una propiedad value que es la que le dará a los Consumers. Un Provider puede tener varios Consumers conectados a el, y tambien puede ser anidado debajo de otro Provider para sobre-escribir un valor más abajo en el árbol de componentes.

Consumer

Es un componente de React que se subscribe a los cambios del contexto. Requiere una función como hijo. Esta función es la que recibe el valor del contexto y retorna un nodo React.

Todos los Consumers descendientes de un Provider se re dibujaran cuando el Provider cambie su valor. La propagación de este cambio no depende del método de ciclo de vida shouldComponentUpdate, ósea que no se detiene aunque un componente superior no se actualice.

Un ejemplo completo

Practico

Para este ejercicio, partan del archivo 'step5_App.js'arrow-up-right que se encuentra dentro de la carpeta base_steps. Copien el contenido a App.js y corran el proyecto.

Deben implementar la misma solución que en paso anterior, pero esta vez sin utilizar el pasamanos de props, sino que creando un contexto que guarde un objeto con los datos name y age, y desde BeerComponent leer esos valores.

Last updated

Was this helpful?