"use client"; import { useParams } from "next/navigation"; import { useEffect, useState } from "react"; import Image from "next/image"; import { useRouter } from "next/navigation"; import toast from "react-hot-toast"; import AddToCartModal from "@/components/AddToCartModal"; import Link from "next/link"; import { AiOutlineHome, AiOutlineShoppingCart } from "react-icons/ai"; import { FiUser } from "react-icons/fi"; export default function ProductDetail() { const params = useParams(); const [product, setProduct] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const [quantity, setQuantity] = useState(1); const router = useRouter(); const [showModal, setShowModal] = useState(false); const [recommendedProducts, setRecommendedProducts] = useState([]); useEffect(() => { const fetchProduct = async () => { try { const res = await fetch(`/api/products/${params.id}`); if (!res.ok) { throw new Error("获取商品详情失败"); } const data = await res.json(); setProduct(data); fetchRecommendedProducts(); // 直接获取推荐商品 } catch (err) { setError(err.message); } finally { setLoading(false); } }; const fetchRecommendedProducts = async () => { try { const res = await fetch(`/api/products`); // 获取所有商品 if (!res.ok) { throw new Error("获取推荐商品失败"); } const data = await res.json(); setRecommendedProducts(data.slice(0, 4)); // 取前四个商品 } catch (err) { console.error(err.message); } }; fetchProduct(); }, [params.id]); const handleAddToCart = async () => { try { const token = localStorage.getItem("token"); if (!token) { router.push("/login"); return; } const res = await fetch("/api/cart", { method: "POST", headers: { "Content-Type": "application/json", Authorization: `Bearer ${token}`, }, body: JSON.stringify({ productId: params.id, quantity: quantity, }), }); if (!res.ok) { throw new Error("添加购物车失败"); } toast.success("添加成功"); handleModalClose(); } catch (error) { toast.error(error.message); } }; const handleBuyNow = () => { const token = localStorage.getItem("token"); if (!token) { router.push("/login"); return; } router.push(`/checkout?products=${params.id}&quantity=${quantity}`); }; const handleAddToCartClick = () => { const token = localStorage.getItem("token"); if (!token) { router.push("/login"); return; } setShowModal(true); }; const handleModalClose = () => { setShowModal(false); }; if (loading) { return
加载中...
; } if (error) { return
错误: {error}
; } if (!product) { return
商品不存在
; } return (
{/* 商品图片 */}
{product.title}
{/* 商品信息 */}
¥{product.price} {product.isVip && ( VIP )}

{product.title}

库存: {product.stock}件 销量: {product.sales}件
{/* 配送信息 */}
配送 {product.delivery}
服务
{product.services.map((service, index) => ( {service} ))}
{/* 商品描述 */}

商品详情

{product.description}

产品特点:

    {product.features.map((feature, index) => (
  • {feature}
  • ))}
{/* 推荐商品模块 */}

猜你喜欢

{recommendedProducts.map((item) => (
{item.title}

{item.title}

¥{item.price}

))}
{/* 底部购买栏 */}
); }