CodeForge

React 19 de Cero a Experto / Estado

Reto: Mi Bolsillo interactivo con estado

Reto40 min60 XP

La "Mi Bolsillo" del módulo 1 era una foto estática. Hoy cobra vida: agregar gastos con un formulario controlado, borrarlos, filtrarlos por categoría, y ver el total actualizarse solo. Es la misma app que hiciste en JavaScript puro (SC-02), pero ahora DECLARATIVA —describes la UI para cada estado y React se encarga del resto—. Vas a sentir en carne propia por qué React cambió el desarrollo de interfaces.

Reto

Mi Bolsillo interactivo

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

Qué debes construir

Una app de gastos interactiva y completa con estado. Debe permitir:

  1. Agregar un gasto con un formulario controlado (nombre, valor, categoría) que valida y limpia tras enviar.
  2. Borrar un gasto con su botón (por delegación de la lista).
  3. Filtrar la lista por categoría con un <select> (todas / comida / transporte / ocio).
  4. Total en vivo que refleja los gastos (el total general, no el filtrado).
  5. Todo con estado: el array de gastos y los campos del formulario viven en useState (o useReducer).

Reglas

  • El array de gastos es la fuente de verdad; las actualizaciones son INMUTABLES ([...], filter, nunca push/mutación).
  • Los inputs son controlados (value + onChange).
  • Todo tipado con TypeScript (props, estado, acciones).
  • La key de la lista es estable (g.id).

35:00

Cuando estés listo, arranca el reloj.

Qué sigue

Módulo 2 conquistado: el estado ya no tiene secretos —useState, snapshots, inmutabilidad, lifting, useReducer—. Tu "Mi Bolsillo" es interactiva de verdad. Pero vive aislada del mundo: no carga datos de una API, no guarda en localStorage, no usa temporizadores. El módulo 3 abre esa puerta con useEffect —cómo React se sincroniza con sistemas externos— y los custom hooks para empaquetar lógica reutilizable.