import React, { useRef, useState, useEffect } from 'react'; import Autoplay from 'embla-carousel-autoplay'; import { Carousel, CarouselContent, CarouselItem, type CarouselApi } from '@repo/ui/components/carousel'; interface CarouselComponentProps { carouselData: { id: number; image: string; title: string }[]; } const JtCarousel: React.FC = ({ carouselData }) => { const [carouselAPI, setCarouselAPI] = useState(null); const [currentIndex, setCurrentIndex] = useState(0); const plugin = useRef(Autoplay({ delay: 2000, stopOnInteraction: true })); // 监听轮播图变化 useEffect(() => { if (!carouselAPI) return; const updateCurrentIndex = () => { setCurrentIndex(carouselAPI.selectedScrollSnap()); }; carouselAPI.on('select', updateCurrentIndex); return () => { carouselAPI.off('select', updateCurrentIndex); }; }, [carouselAPI]); // 滚动到指定索引 const scrollToIndex = (index: number) => { if (carouselAPI) { carouselAPI.scrollTo(index); setCurrentIndex(index); } }; return (
{carouselData.map((item) => (
{/* 设置为100%宽高 */} {item.title}
))}
{/* 圆点指示器 */}
{carouselData.map((_, index) => (
); }; export default JtCarousel;