Cómo trabajar con la API de contexto en React y React Hooks

Introducción
En este artículo, examinará cómo implementar la API de contexto y el React Hook useContext()
en su proyecto de React. La API de contexto es una estructura de React que le permite compartir datos específicos de todos los niveles de su aplicación y ayuda a resolver problemas de perforación de apoyo.
Los Hooks de React son funciones que sirven como reemplazo modular de los métodos de estado y ciclo de vida escritos en componentes funcionales. El useContext()
método es una alternativa a la exploración de propiedades a través del árbol de componentes y crea un estado global interno para pasar datos.
Prerrequisitos
- Se requiere conocimiento de React. Para obtener más información sobre React, consulta la serie Cómo codificar en React.
- Se recomienda tener conocimientos generales sobre React Hooks, pero no es obligatorio. Para obtener más información sobre React Hooks, consulta el tutorial Cómo aplicar React Hooks en tu proyecto React.
Examinando la API de contexto
Para examinar la API de contexto, veamos cómo acceder al contexto en una aplicación React. React ofrece el createContext()
método para ayudar a pasar datos como una propiedad.
En su ColorContext.js
archivo, establezca un colors
objeto y pase una propiedad como argumento al createContext()
método:
ColorContext.js
const colors = { blue: "#03619c", yellow: "#8c8f03", red: "#9c0312"};export const ColorContext = React.createContext(colors.blue);
Esto permitirá .createContext()
que el método suscriba la propiedad colors.blue
como un apoyo de un componente a otro.
A continuación, puede aplicar el .Provider
componente a su contexto en otro archivo. El .Provider
componente habilita los datos en su contexto en toda la aplicación. En su index.js
archivo, importe su ColorContext
función y añádala al .Provider
componente en su declaración de retorno:
[label index.js] import React from 'react';import { ColorContext } from "./ColorContext";function App() { return ( ColorContext.Provider value={colors} Home / /ColorContext.Provider );}
Esto envuelve el contexto de su ColorContext
función para darle color a su aplicación. Mientras su ColorContext
función exista en el árbol de componentes, el .Provider
componente facilitará su funcionalidad en todo momento. Aquí, el Home
componente absorberá los datos dentro de su ColorContext
función. Los componentes secundarios de Home
también obtendrán los datos de ColorContext
.
También puede aplicar el .Consumer
componente para suscribirse a los cambios de un contexto. Esto está disponible tanto en componentes de clase como funcionales. El .Consumer
componente solo es accesible dentro de una declaración de retorno. En su index.js
archivo, establezca un .Consumer
componente para su ColorContext
función en su declaración de retorno:
[index.js]return ( ColorContext.Consumer {colors = div style={colors.blue}Hello World/div} /ColorContext.Consumer);
Cada vez que cambie el contexto, el .Consumer
componente actualizará y ajustará su aplicación en función de la modificación.
Puedes darle a tu componente un tipo de contexto: MyComponent.contextType = ColorContext;
luego, puedes acceder al contexto en tu componente: let context = this.context;
y eso te permite acceder a tu contexto fuera de JSX. O en su lugar, puedes poner en static contextType = ColorContext;
. Esto funciona bastante bien para componentes basados en clases, ya que simplifica cómo traer tu contexto a tu componente. Pero no funcionará en un componente funcional.
También puede declarar un contexto con la .contextType
propiedad en un componente de clase y asignar su valor a la ColorContext
función. También puede asignar su ColorContext
función a la static contextType
API de contexto. Estos métodos se aplican solo dentro de los componentes de clase. Repasemos cómo invocar el contexto dentro de un componente funcional.
Manejo del useContext()método
El useContext()
método acepta un contexto dentro de un componente funcional y funciona con un componente .Provider
y .Consumer
en una sola llamada. En su index.js
archivo, importe el useContext()
método y la ColorContext
función, y declare un componente funcional:
índice.js
import React, { useContext } from "react";import ColorContext from './ColorContext';const MyComponent = () = { const colors = useContext(ColorContext); return div style={{ backgroundColor: colors.blue }}Hello World/div;};
El componente funcional MyComponent
establece el valor dentro de su ColorContext
como argumento del useContext()
método. Su declaración de retorno aplica el color de fondo en su aplicación. Cuando se activa un cambio, el useContext()
método se suscribirá a la actualización con el último valor de contexto. En comparación con la API de contexto, el useContext()
método le permite compartir y pasar datos a través de su aplicación en menos líneas de código.
Conclusión
La API de contexto de React te proporciona funciones y componentes integrados para evitar la perforación de propiedades en tu árbol de componentes. El Hook de React useContext()
aplica la misma funcionalidad en un cuerpo de componente funcional y optimizado en una sola llamada.
Consulta la página de temas de React para obtener proyectos y recursos adicionales.
Deja una respuesta