const Roulette = () => {
const swiperRef = useRef<any>(null)
const [currentSlide, setCurrentSlide] = useState<number | null>(null)
const times = 3
useEffect(() => {
if (swiperRef.current)
setTimeout(() => {
swiperRef.current.slideTo(30)
}, 300)
}, [swiperRef])
const spinWheel = () => {
if (swiperRef.current) {
const totalSlides = swiperRef.current.slides.length
const randomIndex = Math.floor(Math.random() * totalSlides)
const spinTimes = times * totalSlides + randomIndex
console.log(spinTimes, swiperRef.current.slideTo)
// Вращаем колесо
swiperRef.current.slideTo(spinTimes, 2000, 'ease-out')
// Выводим индекс в console после вращения
setTimeout(() => {
setCurrentSlide(randomIndex)
console.log('Выпавший слайд: ', randomIndex)
}, 2000) // 2 секунды - это длина времени вращения
}
}
return (
<div className='bg-red-200 relative'>
<Swiper
onSwiper={swiper => {
swiperRef.current = swiper
}}
slidesPerView={1}
loop={true}
className='mySwiper'
>
{[...Array(10)].map((_, index) => (
<SwiperSlide className='swiper-slide' key={index}>
Слайд {index + 1}
</SwiperSlide>
))}
</Swiper>
<div>
<button onClick={() => spinWheel(1)}>Крутить 1 раз</button>
</div>
{currentSlide !== null && <div>Выпавший слайд: {currentSlide + 1}</div>}
</div>
)
}
swiperRef.current.slideToLoop(randomIndex, 2000, 'ease-out');
setTimeout(() => {
setCurrentSlide(randomIndex);
console.log('Выпавший слайд: ', randomIndex);
}, 2000);