Implementación de Carrito de Compras con Cupones en React
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en
español con un tamaño de 2,94 KB
Componente Carrito.jsx
import { useState } from 'react';
import './Carrito.css';
Configuración de Estados
// Se declaran los estados de descuento y código. El descuento se inicializa con 0.00 y el código con un string vacío.
export default function Carrito({ historial, onCobrar }) {
const [descuento, setDescuento] = useState(0.00)const [codigo, setCodigo] = useState("")
Cálculo del Subtotal y Total
// Este código utiliza el método reduce() para recorrer todos los productos del carrito y sumar sus precios. El acumulador (acc) guarda la suma parcial y el valor inicial es 0. El resultado se almacena en la variable subtotal.
const subtotal = historial.reduce((acc, producto) => { return acc + producto.precio; }, 0);
// Para sacar el total habría que multiplicar el subtotal * (1 - descuento).
const total = subtotal * (1 - descuento)
const coupons = { "SAVE10": 0.1, "SAVE20": 0.2, "VIP": 0.3 };
Gestión de Descuentos
// En esta función primero se verifica que el cupón existe y luego se calcula el valor del descuento.
function AplicarDescuento() { if (coupons[codigo]) { setDescuento((subtotal * coupons[codigo])) } else { alert("Tu cupón no sirve") } }
Función de Cobro
// Esta función resetea el descuento y llama a la función onCobrar, que hace referencia a la función cobrar del componente padre.
function cobrar() { setDescuento(0.00); onCobrar(); }
return (
🧾 Carrito
Listado de Productos Seleccionados
{/* Recorrer el historial para dibujar el nombre y el precio de los productos seleccionados */}
{historial.map((producto, index) => { return (
- {producto["nombre"]}
- €{producto.precio.toFixed(2)}
Aplicación de Cupones en la Interfaz
{/* Aquí se introduce el código de cupón y, cuando el usuario actualiza el input, se cambia el valor de setCodigo */}
<input placeholder="Código de cupón" value={codigo} onChange={(e) => setCodigo(e.target.value)} />
<button onClick={AplicarDescuento}>Aplicar Cupón</button>
Finalización de la Compra
{/* Al clicar el botón de cobrar, se llama a la función cobrar, se resetea el descuento y se llama a la función onCobrar, que hace referencia a la función cobrar del componente padre */}
<button class="checkout" onClick={() => cobrar()}>💳 Cobrar / Reset</button>