Ecosistema npm, React Router, useContext
2026-03-06
Contenido
useContextHasta ahora hemos trabajado únicamente con React y JavaScript.
Sin embargo, en el desarrollo real de aplicaciones es muy común utilizar librerías externas, para ello podemos recurrir Node.JS.
React está diseñado para funcionar dentro de un ecosistema de paquetes.
Ejemplos habituales:
npm (Node Package Manager) es el sistema que permite instalar y gestionar librerías de JavaScript. Como su nombre indica, está desarrollado por Node.JS
Cada proyecto tiene un archivo:
package.json
En este archivo se registran las dependencias del proyecto.
Ejemplo:
Las librerías se instalan desde la terminal.
Esto hace tres cosas:
node_modules (capreta donde se guardan las librerías externas)package.jsonEn una aplicación web tradicional cada enlace carga una página nueva.
En React normalmente trabajamos con Single Page Applications (SPA).
En una SPA:
Para gestionar esto utilizamos React Router.
Realmente es la misma página, solo que el usuario lo percibe como distintas páginas
El usuario percibirá que el sitio web está divido en diferentes subpáginas
/pokemonspokemons/pikachuLos elementos fundamentales son:
BrowserRouterRoutesRouteLinkEjemplo básico:
Elementos del código
BrowserRouterRoutesRoutepath/ corresponde a la página principal.elementpath.<Home />/.<PokemonList />/pokemons.Para navegar entre páginas utilizamos el componente Link.
A diferencia de <a>:
Podemos crear rutas dinámicas.
Ejemplo:
/pokemon/25
/pokemon/7
Definición de la ruta:
Para acceder al parámetro utilizamos el hook useParams de React Router.
Este parámetro puede utilizarse para realizar peticiones a una API.
En aplicaciones grandes aparece un problema frecuente.
Muchos componentes necesitan acceder a la misma información.
Por ejemplo:
Si pasamos la información mediante props, los datos deben atravesar muchos componentes.
Representación conceptual:
App
└ Layout
└ Page
└ Component
Si todos necesitan user, debemos pasar la prop continuamente.
Este problema se conoce como prop drilling.
React proporciona una solución llamada Context.
Context permite compartir información entre múltiples componentes sin pasar props manualmente.
El proceso tiene tres pasos:
Esto crea un contenedor que puede almacenar información compartida.
El Provider permite que los componentes hijos accedan al contexto.
Todos los componentes dentro del Provider pueden acceder al valor.
Para acceder al contexto utilizamos el hook useContext.
El componente obtiene directamente el valor almacenado en el contexto.
import { createContext, useContext } from "react";
const UserContext = createContext();
function App() {
const user = { name: "Javier" };
return (
<UserContext.Provider value={user}>
<Profile />
</UserContext.Provider>
);
}
function Profile() {
const user = useContext(UserContext);
return <h1>{user.name}</h1>;
}