React 19 de Cero a Experto / Datos
Reto: construye tu propio useQuery
Entendiste TanStack Query desde afuera; hoy lo entiendes desde ADENTRO construyendo tu propio
useQuery en miniatura —un custom hook con caché compartida, estados y refetch que CORRE en vivo—.
Es el mismo enfoque "desde cero" con el que en JavaScript hiciste tu propio expect, tu propio
pub-sub y tu propio pipe. Cuando termines, la magia de TanStack no será magia: será un Map de
caché y unos estados bien orquestados que ya sabrás reconstruir.
Reto
Tu propio useQuery
Qué debes construir
Un hook useQuery casero que reproduzca lo esencial de TanStack Query:
useQuery(key, queryFn): recibe una clave (string) y una función async, y devuelve{ data, cargando, error, refetch }.- Caché compartida por clave: un
Mapmodule-level (fuera de React). Dos componentes que usen la misma clave comparten el dato cacheado —el segundo NO vuelve a "Cargando…" si ya está—. - Estados correctos:
cargandomientras laqueryFncorre,errorsi lanza,dataal resolver. refetch: una función que vuelve a ejecutar laqueryFny actualiza la caché.- Demo: dos componentes que usan la MISMA clave; el segundo aparece con datos al instante desde la caché.
Reglas
- La caché vive FUERA del componente (un
Mapa nivel de módulo), como el store del SC-02. - Maneja la race condition: si el componente se desmonta antes de resolver, no actualices su estado.
- Todo tipado con TypeScript y genérico (
<T>).
45:00
Cuando estés listo, arranca el reloj.
Qué sigue
Módulo 5 conquistado: dominas el estado del SERVIDOR —TanStack Query, caché, mutaciones, Suspense, Error Boundaries— y hasta construiste tu propia versión. Pero queda el estado del CLIENTE que muchos componentes comparten: el tema, el usuario logueado, un carrito. Pasarlo por props se vuelve un suplicio (prop drilling). El módulo 6 resuelve el estado global: Context, Zustand, máquinas de estado (XState) y cuándo cada uno.