La gestión de estado en React ha evolucionado. Además de useState/useReducer, existen soluciones para estado global, servidor y URL.
Estado local: useState y useReducer
useState para estado simple. useReducer para lógica compleja con múltiples transiciones de estado. Para la mayoría de componentes, useState es suficiente.
Estado global: Context API
React.createContext + useContext permite estado compartido sin prop drilling. Limitado a árbol de componentes. No ideal para estado que cambia frecuentemente (causa re-renderizados masivos).
Estado de servidor: TanStack Query (React Query)
Maneja caché, revalidación, sincronización y estado de carga para datos de API. Ideal para estado que viene del servidor.
Estado de URL: next/navigation, React Router
Sincroniza estado con la URL: parámetros de búsqueda, rutas dinámicas. Persistente entre recargas y compartible.
Bibliotecas de estado global
Zustand: Simple, basado en hooks, sin providers. Jotai: Estado atómico con fine-grained reactivity. Valtio: Estado mutable con proxies.

