CodeForge

React 19 de Cero a Experto / Fundamentos

Reto: Mi Bolsillo hecho de componentes

Reto30 min60 XP

Hora de juntar los fundamentos: vas a construir la interfaz de "Mi Bolsillo" —la app que conoces— con componentes de React. Props tipadas, una lista renderizada con .map() y key, un contenedor reutilizable con children, y datos que fluyen hacia abajo. Todo estático por ahora (el estado llega en el módulo 2); aquí ensayas el ARMADO de una UI a partir de piezas.

Reto

La UI de Mi Bolsillo en componentes

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

Qué debes construir

La pantalla de "Mi Bolsillo" compuesta de varios componentes reutilizables, renderizando una lista de gastos y su total. La UI resultante debe mostrar: un título, cada gasto en su tarjeta (nombre, valor formateado y categoría), y el total abajo.

Componentes requeridos:

  1. type Gasto: { id: number; nombre: string; valor: number; categoria: string }.
  2. <Tarjeta>: un contenedor con children (la prop del módulo) que aporta el marco (borde, padding, fondo).
  3. <FilaGasto>: recibe un gasto por props (tipadas) y muestra su nombre, valor (formateado con Intl es-CO) y categoría.
  4. <ListaGastos>: recibe gastos: Gasto[] por props y los renderiza con .map() y key={g.id}, cada uno en una <FilaGasto>.
  5. <App>: define el array de gastos, compone todo dentro de una <Tarjeta>, y muestra el total (con reduce) al final.

Reglas

  • Todas las props tipadas con TypeScript (nada de any).
  • La lista usa key estable (g.id), no el índice.
  • Los datos fluyen hacia abajo (props); nada de estado todavía.
  • Formatea los valores en pesos con Intl.NumberFormat("es-CO").

30:00

Cuando estés listo, arranca el reloj.

Qué sigue

Fundamentos dominados: construyes UIs a partir de componentes, props, listas y composición. Pero todo es estático —la pantalla no cambia con la interacción—. El módulo 2 trae la pieza que lo cambia todo: el ESTADO. Con useState, tu "Mi Bolsillo" cobrará vida —agregar, borrar, filtrar—, y entenderás el corazón reactivo de React.