import React, { useEffect, useState } from 'react' import { useSelector } from 'react-redux' import type { StoreType } from '../../../stores' import type { CartItem } from '../../../types/cart.type' import { Apis } from '../../../apis' import type { Product } from '../../../types/product.type' export default function Cart() { const userStore = useSelector((store: StoreType) => store.user) const [products, setProducts] = useState([]) // Lấy thông tin product cho từng item trong giỏ useEffect(() => { async function fetchProducts() { let temsArr: Product[] = [] for (const item of userStore.cart || []) { const res = await Apis.product.findProductById(item.productId) temsArr.push(res) } setProducts(temsArr) } fetchProducts() }, [userStore.cart]) // Tính tổng tiền const total = userStore.cart?.reduce((sum, item) => { const p = products[item.productId] return sum + (p ? p.price * item.quantity : 0) }, 0) || 0 return (

🛒 Giỏ hàng của bạn

{userStore.cart?.length === 0 ? (

Giỏ hàng trống.

) : (
    {userStore.cart.map((item: CartItem) => { const product = products.find(pro => pro.id == item.productId) return (
  • {/* Ảnh sản phẩm */}
    {product ? ( {product.name} ) : (
    )}
    {/* Thông tin */}

    {product ? product.name : 'Đang tải...'}

    {product ? product.price.toLocaleString() + ' đ' : ''}

    {/* Số lượng & tổng */}

    SL: {item.quantity}

    {product && (

    {(product.price * item.quantity).toLocaleString()} đ

    )}
  • ) })}
{/* Tổng tiền */}

Tổng cộng:{' '} {total.toLocaleString()} đ

{/* Nút hành động */}
)}
) }