Context API: estado global sin prop drilling

Aprende a compartir estado entre ramas del árbol de componentes usando Context API cuando pasar props por muchos niveles deja de ser sostenible.

Context API resuelve un problema concreto: compartir datos transversales entre muchos componentes sin encadenar props nivel tras nivel.

Ejemplos típicos: usuario autenticado, tema de interfaz, idioma o configuración global de producto.

No es un sustituto universal de todo estado; para estado local de una sección sigue siendo mejor usar useState o props directas.

La clave profesional es usar contexto para datos realmente globales y estables, evitando convertirlo en un cajón de sastre.

  • Úsalo cuando el dato se necesita en muchas ramas lejanas del árbol.
  • Si solo dos componentes cercanos comparten un dato, props normales suelen ser más simples.
  • Cuando empiezas a pasar la misma prop por 4-5 niveles que ni la usan, aparece prop drilling.
  • Ahí Context mejora legibilidad y reduce acoplamiento entre capas intermedias.
  • Usuario autenticado

Cuándo usar Context API

Úsalo cuando el dato se necesita en muchas ramas lejanas del árbol.

Si solo dos componentes cercanos comparten un dato, props normales suelen ser más simples.

Cuando empiezas a pasar la misma prop por 4-5 niveles que ni la usan, aparece prop drilling.

Ahí Context mejora legibilidad y reduce acoplamiento entre capas intermedias.

  • Usuario autenticado
  • Tema (light/dark)
  • Idioma
  • Feature flags globales

Patrón base: createContext + Provider + useContext

El Provider define el valor compartido; los consumidores lo leen con useContext.

Buenas prácticas para escalar

Contexto útil sí, contexto omnipresente no.

Divide contextos por dominio (auth, theme, cart) en lugar de uno gigante con todo.

Memoiza valores complejos si cambian con frecuencia para evitar renders innecesarios en consumidores.

Expón custom hooks (`useAuth`, `useTheme`) para encapsular y tipar mejor el acceso.

React
17

Context API: estado global sin prop drilling

Aprende a compartir estado entre ramas del árbol de componentes usando Context API cuando pasar props por muchos niveles deja de ser sostenible.

Código del tema: const { data } = useQuery({ queryKey:["items"] });

📘 Teoría

Cuándo usar Context API

Úsalo cuando el dato se necesita en muchas ramas lejanas del árbol.

Si solo dos componentes cercanos comparten un dato, props normales suelen ser más simples.

Cuando empiezas a pasar la misma prop por 4-5 niveles que ni la usan, aparece prop drilling.

Ahí Context mejora legibilidad y reduce acoplamiento entre capas intermedias.

  • Usuario autenticado
  • Tema (light/dark)
  • Idioma
  • Feature flags globales

Patrón base: createContext + Provider + useContext

El Provider define el valor compartido; los consumidores lo leen con useContext.

Contexto de autenticación
import { createContext, useContext, useState } from 'react';

const AuthContext = createContext(null);

export function AuthProvider({ children }) {
  const [user, setUser] = useState(null);

  return (
    <AuthContext.Provider value={{ user, setUser }}>
      {children}
    </AuthContext.Provider>
  );
}

export function useAuth() {
  return useContext(AuthContext);
}

Buenas prácticas para escalar

Contexto útil sí, contexto omnipresente no.

1

Divide contextos por dominio (auth, theme, cart) en lugar de uno gigante con todo.

2

Memoiza valores complejos si cambian con frecuencia para evitar renders innecesarios en consumidores.

3

Expón custom hooks (`useAuth`, `useTheme`) para encapsular y tipar mejor el acceso.

🧪 Aprende probando

Ejemplo Ejemplo: tema global con Context Un botón cambia el tema y cualquier componente consumidor lo refleja.

🏁 Retos

Reto Reto: consume contexto en un componente hijo Usa `useContext` para leer `user` desde `AuthContext`.

🧰 Recursos

Test

Comprueba tus conocimientos con un test sobre React.

Test de React

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros 😉.

Esta la hice en febrero de 2026 para facilitar el aprendizaje de mis alumnxs. Aprender desarrollo web practicando. La idea es que crezca semanalmente con nuevos temas, tests y retos.

Inspirado en MDN, en W3Schools, en Codepen, en el crack de Manz y en mil sitios de documentación sobre desarrollo web. Quería aportar además de bloques teóricos con ejemplos, la gamificación de los retos y el sistema de test que ya tenía en culTest .

Si te gustó, si no te gustó, si quieres saludarme, o invitarme a 🍻 no dudes en escribirme en cristianeslava@gmail.com .