import React, { useState, useEffect } from 'react'; import './Carousel.css'; export default function Carousel({ items = [], autoplay = true, interval = 3000, onChange }) { const [index, setIndex] = useState(0); const len = items.length || 1; function go(i) { const next = (i + len) % len; setIndex(next); onChange && onChange(next); } useEffect(() => { if (!autoplay || items.length < 2) return; const t = setInterval(() => go(index + 1), interval); return () => clearInterval(t); // eslint-disable-next-line }, [index, autoplay, interval, items.length]); return (
{items.map((s, i) => (
{s.text}
))}
{items.map((_, i) => ( go(i)} /> ))}
); }