You can use slickGoTo
method.
This method accepts index
, where you want to slide!
First, you have to create ref
and pass it to the react-slick component, then you can access the methods provided by react-slick.
https://react-slick.neostack.com/docs/api/#methods
Here is the example:
import React, { useRef } from "react";
import "./styles.css";
import "slick-carousel/slick/slick.css";
import "slick-carousel/slick/slick-theme.css";
import Slider, { slickGoTo } from "react-slick";
import { useState } from "react";
function Arrow(props) {
let className = props.type === "next" ? "nextArrow" : "prevArrow";
className += " arrow";
const char = props.type === "next" ? "" : "";
return (
<span className={className} onClick={props.onClick}>
{char}
</span>
);
}
export default function App() {
const sliderRef = useRef();
const [currentSlide, setCurrentSlide] = useState("Slide 1");
const slides = ["Slide 1", "Slide 2", "Slide 3", "Slide 4", "Slide 5"];
const renderSlides = () =>
slides.map((text) => (
<div>
<h3>{text}</h3>
</div>
));
return (
<div className="App">
<Slider
nextArrow={<Arrow type="next" />}
prevArrow={<Arrow type="prev" />}
ref={sliderRef}
>
{renderSlides()}
</Slider>
<button
style={{ marginTop: "10px" }}
onClick={() => {
setCurrentSlide("Slide 3");
//Indexing starts from 0
sliderRef.current.slickGoTo(2);
}}
>
Goto Slide 3
</button>
<div style={{ marginTop: "10px" }}>Current Slide : {currentSlide} </div>
</div>
);
}
Thanks!