¡Bienvenidos de nuevo amigos!
Hoy repasaremos los conceptos básicos de un React Hook llamado useContext. useContext es una poderosa herramienta que va un paso más allá de useState para crear un estado global que puede transmitir información a componentes hijos y nietos sin pasar accesorios directamente.
Pero me estoy adelantando.
Si no está familiarizado con useState, salte y lea primero mi artículo anterior, luego regrese y prepárese para sorprenderse.
Cómo usar 'useState': https://dev.to/deborah/how-to-use-state-in-react-2pah
Ahora que estás al día con 'useState', ¡profundicemos en 'useContext'!
useContext es ideal para datos que deben ubicarse en un ámbito global (como un nombre de usuario que mantendrá a alguien conectado durante toda la aplicación), pero no es el atajo definitivo para pasando accesorios a los componentes infantiles.
Sin embargo, useContext nos permite pasar datos sin pasar accesorios directamente y, por lo tanto, es extremadamente útil cuando encontramos datos a los que deben acceder varios componentes secundarios o que deben estar disponibles en toda la aplicación.
Para que useContext esté en funcionamiento, debemos seguir dos pasos: primero, debemos crear un objeto de contexto ('createContext'), luego debemos acceder al valor a través de un proveedor usando el enlace 'useContext'. .
Los siguientes ejemplos se han simplificado para darle una mejor idea de qué se trata useContext y cómo usarlo, pero debe tener en cuenta que createContext a menudo se declara en un archivo independiente. Sin embargo, comparo 'Parent.js' con un archivo típico 'App.js' (un componente en la parte superior de la jerarquía de componentes). Parent.js es donde definí todas mis variables de estado, las funciones que actualizan esas variables de estado y realicé búsquedas en la base de datos usando useEffect. Elegí declarar createContext en mi componente de nivel superior en lugar de crear su propio archivo para simplificar esta explicación y que puedas comprender mejor los conceptos centrales de Context.
export Context = React.createContext();
'Context' es un objeto de contexto creado llamando a 'createContext'. El objeto de contexto contiene un componente llamado Proveedor al que ahora podremos llamar y luego pasar las variables y funciones que queremos mantener en nuestro nivel "global".
return(// Other JSX & the child components we want to hand Context to. );
Para completar 'Context.Provider', también debemos proporcionar un valor a 'Provider'. Aquí es donde pasaremos un objeto con todas y cada una de las variables y funciones que llamaremos con 'Contexto' en los componentes secundarios:
return(// Other JSX & the child components we want to hand Context to. );
Es MUY IMPORTANTE tener en cuenta que debemos colocar TODOS los componentes secundarios que utilizarán las variables y funciones entre las etiquetas. Por ejemplo:
return();
Observe que no necesitamos pasar ningún accesorio directamente a los componentes secundarios (como lo haríamos con 'useState') siempre que coloquemos los accesorios dentro de 'value'.
Ahora que hemos usado createContext y pasado todos nuestros elementos globales a 'Context.Provider', estamos listos para pasar a los componentes secundarios y ver cómo usar 'Context'.
import Context from ‘./Parent.js’;
import React, { useContext } from ‘react’; import Context from ‘./Parent.js’;
import React, { useContext } from ‘react’; import Context from ‘./Parent.js’; function Child(){ const { example, setExample } = useContext(Context) // The rest of our code
En este código utilizamos llaves {} para indicar la asignación de desestructuración. Esa es una forma elegante de decir que podemos llamar a múltiples variables y funciones almacenadas en Context. También estamos pasando 'Context' a 'useContext' para que podamos acceder a los valores definidos en Context.Provider (que declaramos en 'Parent.js').
const expId = example.id;
o
setExample(newExample);
¡Felicidades! Ahora tiene todas las herramientas para comenzar con createContext y useContext. Comprende que useContext le permite crear una especie de "estado global" que puede pasar variables y funciones a componentes sin pasar accesorios directamente a través de componentes secundarios.
También profundizamos en los seis pasos necesarios para que el contexto funcione en sus aplicaciones. Ahora está listo para comenzar a codificar con createContext y useContext, pero en caso de que alguna vez necesite una guía de inicio rápido, aquí la tiene:
export const Context = React.createContext();
//Child components
import React, { useContext } from ‘react’;
import Context from “./Parent.js’;
const { example, handleExample } = useContext(Context);
Una última nota, si desea profundizar en este tema, aquí están los recursos de documentación oficial a los que también hice referencia mientras aprendía useContext y escribía este blog:
Documentación oficial:
https://react.dev/reference/react/createContext
Documentación oficial heredada, todavía algo útil para comprender useContext:https://legacy.reactjs.org/docs/context.html
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3