React 19 de Cero a Experto / Fundamentos
Reto: Mi Bolsillo hecho de componentes
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
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:
type Gasto:{ id: number; nombre: string; valor: number; categoria: string }.<Tarjeta>: un contenedor conchildren(la prop del módulo) que aporta el marco (borde, padding, fondo).<FilaGasto>: recibe ungastopor props (tipadas) y muestra su nombre, valor (formateado conIntles-CO) y categoría.<ListaGastos>: recibegastos: Gasto[]por props y los renderiza con.map()ykey={g.id}, cada uno en una<FilaGasto>.<App>: define el array de gastos, compone todo dentro de una<Tarjeta>, y muestra el total (conreduce) al final.
Reglas
- Todas las props tipadas con TypeScript (nada de
any). - La lista usa
keyestable (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.