React slick. Swipe ломает autoplay
У меня слайдер на реакте, вот разметка и настройки
export default function SliderGreeting() {
const slider = useRef();
const settings = {
dots: true,
autoplay: true,
infinite: true,
speed: 1000,
autoplaySpeed: 5000,
slidesToShow: 1,
slidesToScroll: 1,
arrows: false,
};
return (
<>
<div className={classes.slider}>
<Slider {...settings} ref={slider}>
{listBanners.map((banner, index) => {
return (
<Box
key={ index }
component="div"
className={classes.slide}
sx={{background: `url(${rest.host + banner.previewPicture}) center center no-repeat`}}
>
<Box className={classes.slideInner}>
<Box component="div" className={classes.logo}></Box>
</Box>
</Box>
);
})}
</Slider>
</div>
)}
</>
);
}
Автоплей работает хорошо до тех пор, пока не свайпнешь слайд на следующий. Не всегда, но чаще всего видно, что слайд начинает перелистываться быстрее. То есть как будто продолжает работать таймер от прошлого слайда (клик по точкам сохраняет автоплей). Кто-нибудь сталкивался с подобной ситуацией? Это лечится как-нибудь? Гугл не дал ответа на этот вопрос. Вот можно посмотреть работу автоплея при свайпе https://skr.sh/vQOjUiIjLFW
Ответы (1 шт):
Автор решения: Maria Shabalina
→ Ссылка
Мне помогли вот такие настройки:
const settings = {
dots: true,
autoplay: true,
infinite: true,
speed: 1000,
autoplaySpeed: 5000,
slidesToShow: 1,
slidesToScroll: 1,
arrows: false,
swipeToSlide: true,
afterChange: () => {
// Ручное перезапуск автоплея после смены слайда
sliderRef.slickPlay();
},
};