Ejercicio: Componentes y props
Objetivo
Construir un componente Producto configurable con props y un contenedor Lote que use children.
Cómo se trabaja
Escribe un componente llamado App (puedes crear los demás que necesites). Prueba tu código en el editor de abajo; cuando funcione, pega todo el archivo en el comprobador. Los import de react se aceptan y se ignoran, porque aquí React ya está cargado.
Pasos
Marca cada paso a medida que lo completes. Tu avance se guarda en este navegador.
💡 Pista 1: dos decimales
Usa precio.toFixed(2) dentro de las llaves.
💡 Pista 2: mostrar solo si hay oferta
Escribe {enOferta && <span className="oferta">¡Oferta!</span>} dentro del <h3>.
🔎 Comprueba tu trabajo
Pega tu código y pulsa Comprobar. La revisión ocurre en tu navegador; nada se envía a ningún sitio. Cada punto en rojo incluye una pista.
✅ Ver una solución posible
Intenta resolverlo antes de mirar. Tu versión puede ser distinta y también correcta.
function Producto({ nombre, precio, enOferta = false, moneda = "$" }) {
return (
<article className="producto">
<h3>
{nombre} {enOferta && <span className="oferta">¡Oferta!</span>}
</h3>
<p className="precio">{moneda}{precio.toFixed(2)}</p>
</article>
);
}
function Lote({ titulo, children }) {
return (
<section className="lote">
<h2>{titulo}</h2>
{children}
</section>
);
}
export default function App() {
return (
<Lote titulo="Oficina">
<Producto nombre="Teclado" precio={25} enOferta />
<Producto nombre="Mouse" precio={12.5} />
<Producto nombre="Monitor" precio={180} enOferta />
</Lote>
);
}
💡 🏁 Reto extra (opcional)
Añade una prop descuento (un número, por ejemplo 20) y, si existe, muestra el precio nuevo tachado junto al precio original.