// ... existing code ... import React, { useRef, useState, useEffect } from 'react'; import Autoplay from 'embla-carousel-autoplay'; import { Carousel, CarouselContent, CarouselItem, type CarouselApi } from '@repo/ui/components/carousel'; const CarouselDemo: React.FC = () => { const [carouselAPI, setCarouselAPI] = useState(null); const [currentIndex, setCurrentIndex] = useState(0); const plugin = useRef(Autoplay({ delay: 2000, stopOnInteraction: true })); // 轮播图数据 const slides = [ { id: 1, image: '/header.png', content: '两会闭幕 从春天出发', }, { id: 2, image: '/header.png', content: '习近平主席重要讲话', }, { id: 3, image: '/header.png', content: '全国人大代表步出人民大会堂', }, ]; // 监听轮播图变化 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 (
{slides.map((slide) => (
{slide.content}
))}
{/* 圆点指示器 */}
{slides.map((_, index) => (
); }; export default CarouselDemo;