|
|
@@ -6,64 +6,74 @@ import { Navigation } from "swiper/modules";
|
|
|
import "swiper/css";
|
|
|
import "swiper/css/navigation";
|
|
|
import Image from "next/image";
|
|
|
+import { HomeSectionImage } from "@/types/home/type";
|
|
|
+interface jinGangProps {
|
|
|
+ jinGang: HomeSectionImage[];
|
|
|
+}
|
|
|
+// const MOCK_DATA = [
|
|
|
+// [
|
|
|
+// {
|
|
|
+// name: "Hd Lace Wig",
|
|
|
+// img: "https://cdn.asteriahair.com/uploads/202602/11/20260211095740_8181b0e039800e07.png",
|
|
|
+// },
|
|
|
+// {
|
|
|
+// name: "Ready To Go",
|
|
|
+// img: "https://cdn.asteriahair.com/uploads/202602/11/20260211095740_8181b0e039800e07.png",
|
|
|
+// },
|
|
|
+// {
|
|
|
+// name: "Colored Wig",
|
|
|
+// img: "https://cdn.asteriahair.com/uploads/202602/11/20260211095740_8181b0e039800e07.png",
|
|
|
+// },
|
|
|
+// {
|
|
|
+// name: "U&V Part Wig",
|
|
|
+// img: "https://cdn.asteriahair.com/uploads/202602/11/20260211095740_8181b0e039800e07.png",
|
|
|
+// },
|
|
|
+// {
|
|
|
+// name: "New Arrival",
|
|
|
+// img: "https://cdn.asteriahair.com/uploads/202602/11/20260211095740_8181b0e039800e07.png",
|
|
|
+// },
|
|
|
+// {
|
|
|
+// name: "360 Wig",
|
|
|
+// img: "https://cdn.asteriahair.com/uploads/202602/11/20260211095740_8181b0e039800e07.png",
|
|
|
+// },
|
|
|
+// ],
|
|
|
|
|
|
-const MOCK_DATA = [
|
|
|
- [
|
|
|
- {
|
|
|
- name: "Hd Lace Wig",
|
|
|
- img: "https://cdn.asteriahair.com/uploads/202602/11/20260211095740_8181b0e039800e07.png",
|
|
|
- },
|
|
|
- {
|
|
|
- name: "Ready To Go",
|
|
|
- img: "https://cdn.asteriahair.com/uploads/202602/11/20260211095740_8181b0e039800e07.png",
|
|
|
- },
|
|
|
- {
|
|
|
- name: "Colored Wig",
|
|
|
- img: "https://cdn.asteriahair.com/uploads/202602/11/20260211095740_8181b0e039800e07.png",
|
|
|
- },
|
|
|
- {
|
|
|
- name: "U&V Part Wig",
|
|
|
- img: "https://cdn.asteriahair.com/uploads/202602/11/20260211095740_8181b0e039800e07.png",
|
|
|
- },
|
|
|
- {
|
|
|
- name: "New Arrival",
|
|
|
- img: "https://cdn.asteriahair.com/uploads/202602/11/20260211095740_8181b0e039800e07.png",
|
|
|
- },
|
|
|
- {
|
|
|
- name: "360 Wig",
|
|
|
- img: "https://cdn.asteriahair.com/uploads/202602/11/20260211095740_8181b0e039800e07.png",
|
|
|
- },
|
|
|
- ],
|
|
|
-
|
|
|
- [
|
|
|
- {
|
|
|
- name: "13x4 Lace Wig",
|
|
|
- img: "https://cdn.asteriahair.com/uploads/202602/11/20260211095800_8181b0e039800e07.png",
|
|
|
- },
|
|
|
- {
|
|
|
- name: "Body Wave Wig",
|
|
|
- img: "https://cdn.asteriahair.com/uploads/202602/11/20260211095800_8181b0e039800e07.png",
|
|
|
- },
|
|
|
- {
|
|
|
- name: "Deep Wave Wig",
|
|
|
- img: "https://cdn.asteriahair.com/uploads/202602/11/20260211095800_8181b0e039800e07.png",
|
|
|
- },
|
|
|
- {
|
|
|
- name: "Straight Wig",
|
|
|
- img: "https://cdn.asteriahair.com/uploads/202602/11/20260211095800_8181b0e039800e07.png",
|
|
|
- },
|
|
|
- {
|
|
|
- name: "Curly Wig",
|
|
|
- img: "https://cdn.asteriahair.com/uploads/202602/11/20260211095800_8181b0e039800e07.png",
|
|
|
- },
|
|
|
- {
|
|
|
- name: "Bob Wig",
|
|
|
- img: "https://cdn.asteriahair.com/uploads/202602/11/20260211095800_8181b0e039800e07.png",
|
|
|
- },
|
|
|
- ],
|
|
|
-];
|
|
|
+// [
|
|
|
+// {
|
|
|
+// name: "13x4 Lace Wig",
|
|
|
+// img: "https://cdn.asteriahair.com/uploads/202602/11/20260211095800_8181b0e039800e07.png",
|
|
|
+// },
|
|
|
+// {
|
|
|
+// name: "Body Wave Wig",
|
|
|
+// img: "https://cdn.asteriahair.com/uploads/202602/11/20260211095800_8181b0e039800e07.png",
|
|
|
+// },
|
|
|
+// {
|
|
|
+// name: "Deep Wave Wig",
|
|
|
+// img: "https://cdn.asteriahair.com/uploads/202602/11/20260211095800_8181b0e039800e07.png",
|
|
|
+// },
|
|
|
+// {
|
|
|
+// name: "Straight Wig",
|
|
|
+// img: "https://cdn.asteriahair.com/uploads/202602/11/20260211095800_8181b0e039800e07.png",
|
|
|
+// },
|
|
|
+// {
|
|
|
+// name: "Curly Wig",
|
|
|
+// img: "https://cdn.asteriahair.com/uploads/202602/11/20260211095800_8181b0e039800e07.png",
|
|
|
+// },
|
|
|
+// {
|
|
|
+// name: "Bob Wig",
|
|
|
+// img: "https://cdn.asteriahair.com/uploads/202602/11/20260211095800_8181b0e039800e07.png",
|
|
|
+// },
|
|
|
+// ],
|
|
|
+// ];
|
|
|
|
|
|
-export default function JinGangSwiper() {
|
|
|
+export default function JinGangSwiper({ jinGang }: jinGangProps) {
|
|
|
+ if (!jinGang || jinGang.length === 0) return null;
|
|
|
+ // 4. 真实数据按每6个拆分一组,替换原来的模拟拆分逻辑
|
|
|
+ const chunkSize = 6;
|
|
|
+ const productBlocks: HomeSectionImage[][] = [];
|
|
|
+ for (let i = 0; i < jinGang.length; i += chunkSize) {
|
|
|
+ productBlocks.push(jinGang.slice(i, i + chunkSize));
|
|
|
+ }
|
|
|
const [activeIndex, setActiveIndex] = useState(0);
|
|
|
|
|
|
const [swiperRef, setSwiperRef] = useState<SwiperType | null>(null);
|
|
|
@@ -89,32 +99,14 @@ export default function JinGangSwiper() {
|
|
|
onSlideChange={handleSlideChange}
|
|
|
className="mb-6"
|
|
|
>
|
|
|
- <SwiperSlide>
|
|
|
+ {productBlocks.map((block, blockIndex) => (
|
|
|
+ <SwiperSlide key={blockIndex}>
|
|
|
<div className="grid grid-cols-3 gap-2">
|
|
|
- {MOCK_DATA[0].map((item, idx) => (
|
|
|
+ {block.map((item, idx) => (
|
|
|
<div key={`block1-${idx}`} className="relative w-full aspect-[3/4]">
|
|
|
<Image
|
|
|
- src={item.img}
|
|
|
- alt={item.name}
|
|
|
- fill
|
|
|
- className="object-cover rounded-md"
|
|
|
- />
|
|
|
- {/* <div className="absolute bottom-2 left-2 text-white text-sm font-medium bg-black/50 px-2 py-1 rounded">
|
|
|
- {item.name}
|
|
|
- </div> */}
|
|
|
- </div>
|
|
|
- ))}
|
|
|
- </div>
|
|
|
- </SwiperSlide>
|
|
|
-
|
|
|
- {/* 第二大块:6个分类卡片(2行3列) */}
|
|
|
- <SwiperSlide>
|
|
|
- <div className="grid grid-cols-3 gap-2">
|
|
|
- {MOCK_DATA[1].map((item, idx) => (
|
|
|
- <div key={`block2-${idx}`} className="relative w-full aspect-[3/4]">
|
|
|
- <Image
|
|
|
- src={item.img}
|
|
|
- alt={item.name}
|
|
|
+ src={item.image}
|
|
|
+ alt={item.title}
|
|
|
fill
|
|
|
className="object-cover rounded-md"
|
|
|
/>
|
|
|
@@ -125,6 +117,8 @@ export default function JinGangSwiper() {
|
|
|
))}
|
|
|
</div>
|
|
|
</SwiperSlide>
|
|
|
+ ))}
|
|
|
+
|
|
|
</Swiper>
|
|
|
|
|
|
{/* 底部指示器按钮:2个,激活态黑色,未激活灰色 */}
|