"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
{product.description}
¥{item.price}