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.

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. culTest

La hice en febrero de 2026 para facilitar el aprendizaje de mis alumnos. La idea es aprender desarrollo web practicando y que el proyecto siga creciendo con nuevos temas, tests y retos.

Está inspirada en MDN, W3Schools, CodePen, Manz y muchos otros sitios de documentación sobre desarrollo web. Quería combinar teoría útil, ejemplos ejecutables, retos y el sistema de tests que ya tenía en culTest. culTest

Si te gustó, si no te gustó o si quieres escribirme, puedes hacerlo en cristianeslava@gmail.com