'use client'; import { useState, useEffect } from 'react'; const ProductImageGallery = ({ data }) => { const [currentImageIndex, setCurrentImageIndex] = useState(0); // 如果没有attachments,不显示组件 if (!data?.attachments || data.attachments.length === 0) { return null; } // 找到主图在attachments中的索引 const getMainImageIndex = () => { if (!data.image) return 0; const mainImageIndex = data.attachments.findIndex( attachment => attachment.file_url === data.image ); return mainImageIndex >= 0 ? mainImageIndex : 0; }; const mainImageIndex = getMainImageIndex(); const currentImage = data.attachments[currentImageIndex]?.file_url || data.attachments[0]?.file_url; // 初始化当前索引为主图索引 useEffect(() => { setCurrentImageIndex(mainImageIndex); }, [mainImageIndex]); const changeMainImage = (direction) => { if (data.attachments.length <= 1) return; if (direction === 'next') { setCurrentImageIndex((prev) => (prev + 1) % data.attachments.length); } else { setCurrentImageIndex((prev) => (prev - 1 + data.attachments.length) % data.attachments.length); } }; const changeMainImageByIndex = (index) => { setCurrentImageIndex(index); }; return (
{/* 主图显示区域 */}
{data?.title {/* 导航箭头 */} {data.attachments.length > 1 && ( <> )}
{/* 缩略图列表 - 直接显示attachments */}
{data.attachments.map((attachment, index) => (
changeMainImageByIndex(index)} > {`${data?.title { console.error('Image load error:', attachment.file_url); e.target.style.display = 'none'; }} />
))}
); }; export default ProductImageGallery;