Cómo manejar estados globales en React sin complicarse

Cómo manejar estados globales en React sin complicarse

Cuando una aplicación React empieza a crecer, es normal que varios componentes necesiten acceder a la misma información. El problema aparece cuando comenzamos a pasar datos de un componente a otro mediante props durante muchos niveles. A esto se le conoce como prop drilling, y puede hacer que el código sea difícil de mantener.

La solución no siempre es instalar una librería compleja. React ya ofrece herramientas que permiten manejar estados compartidos de forma sencilla.

1. ¿Qué es un estado global?

Un estado global es información que puede ser utilizada por diferentes partes de una aplicación.

Por ejemplo:

  • Usuario autenticado.
  • Tema claro u oscuro.
  • Carrito de compras.
  • Productos seleccionados.
  • Preferencias del usuario.
  • Notificaciones.

En lugar de guardar estos datos dentro de un único componente y enviarlos mediante múltiples props, podemos centralizarlos.

2. Context API: la opción sencilla

Para muchos proyectos pequeños y medianos, Context API es suficiente.

Primero creamos un contexto:

import { createContext, useContext, useState } from "react";

const AppContext = createContext();

export function AppProvider({ children }) {
    const [usuario, setUsuario] = useState(null);

    return (
        <AppContext.Provider value={{ usuario, setUsuario }}>
            {children}
        </AppContext.Provider>
    );
}

export function useApp() {
    return useContext(AppContext);
}

Después envolvemos nuestra aplicación con el proveedor:

<AppProvider>
    <App />
</AppProvider>

Ahora cualquier componente puede acceder al estado:

const { usuario, setUsuario } = useApp();

Esto evita tener que pasar usuario por varios componentes.

3. No conviertas todo en estado global

Un error frecuente es guardar absolutamente todo en Context.

No necesitas convertir estados locales como:

const [nombre, setNombre] = useState("");

en estados globales si únicamente los utiliza ese componente.

Una buena regla es:

Estado local → cuando solo lo necesita un componente.

Estado global → cuando diferentes partes de la aplicación necesitan compartirlo.

4. ¿Cuándo utilizar Redux o Zustand?

Cuando la aplicación crece, puede ser conveniente utilizar herramientas especializadas.

Redux Toolkit es una excelente opción para aplicaciones grandes que necesitan una estructura muy organizada.

Zustand es una alternativa más sencilla y ligera cuando quieres manejar estados globales sin demasiado código adicional.

La clave no es utilizar la herramienta más popular, sino la que resuelva realmente el problema.

5. Una estructura recomendable

Puedes organizar el proyecto de esta manera:

src/
├── components/
├── pages/
├── context/
│   └── AppContext.jsx
├── hooks/
│   └── useApp.js
└── App.jsx

De esta forma, el código relacionado con el estado compartido queda separado del resto de la aplicación.Conclusión

Manejar estados globales en React no tiene por qué ser complicado. Empieza con useState para los estados locales y utiliza Context API cuando necesites compartir información entre diferentes componentes.

Si el proyecto continúa creciendo, puedes evaluar soluciones como Zustand o Redux Toolkit.

La mejor arquitectura es la que mantiene el código simple, predecible y fácil de mantener, no la que utiliza más herramientas.

Te puede interesar...

Deja un comentario