CodeForge

React 19 de Cero a Experto / Estado global

Reto: Mi Bolsillo con estado global

Reto40 min60 XP

Cierras el módulo de estado global montando una "Mi Bolsillo" donde el estado vive en un STORE COMPARTIDO y varios componentes independientes —formulario, lista, total, filtro— lo leen y lo cambian SIN pasarse una sola prop ni sufrir prop drilling. Usarás el patrón store + hook que construiste en la lección de Zustand, aplicado a una app completa. Es la culminación de todo el módulo: el estado en su sitio, los componentes desacoplados.

Reto

Mi Bolsillo global

Media35 min60 XP(×2 sin mirar la solución)

Qué debes construir

Una "Mi Bolsillo" cuyo estado vive en un store global compartido:

  1. Un store (con tu crearStore + useStore, o con Context + useReducer) que guarde gastos y filtro, con acciones agregar, borrar y setFiltro.
  2. Componentes independientes que consuman el store sin recibir props entre ellos: un Form para agregar, una Lista (que muestra los gastos filtrados), un Filtro (select de categoría), y un Resumen (total + conteo).
  3. Sin prop drilling: ningún componente pasa el estado a otro; cada uno lee del store lo que necesita.
  4. Lo derivado se calcula: la lista filtrada y el total se DERIVAN en el render, no se guardan.

Reglas

  • El store vive FUERA de los componentes; las actualizaciones son inmutables.
  • Cada componente se suscribe SOLO a la parte del store que usa (selector).
  • Todo tipado con TypeScript; categorías como unión de literales ("comida" | "transporte" | "ocio").

35:00

Cuando estés listo, arranca el reloj.

Qué sigue

Módulo 6 conquistado: dominas el estado global —prop drilling, Context, Zustand, XState— y sobre todo el CRITERIO para elegir cada uno. Ya tienes componentes, estado, efectos, datos y estado global: las piezas de una app real. Lo que falta es unirlas en PANTALLAS navegables. El módulo 7 trae el ROUTING con React Router: rutas, layouts anidados, parámetros de URL y rutas protegidas.