Реагирующая скользкая карусель повторно отображается при нажатии на стрелку

#javascript #reactjs #carousel #slick.js

Вопрос:

Я работаю над общим компонентом карусели, который отображает две разные карусели в зависимости от реквизита. Я заметил, что вся карусель перерисовывается каждый раз, когда я нажимаю на стрелки. Мне нужно получить индекс текущего слайда, поэтому мне нужно знать, как остановить повторный рендеринг моей карусели.

Заранее спасибо.

Мой код для компонента карусели приведен ниже:

 render() {

    // slider settings
    const centerAlignedCarouselSettings = {
        focusOnSelect: true,
        className: "center-carousel",
        centerMode: true,
        centerPadding: "60px",
        infinite: true,
        slidesToShow: 3,
        slidesToScroll: 1,
        speed: 2000,
        cssEase: "linear",
        arrows: false,

    };

    const leftAlignedCarouselSettings = {
        className: "left-carousel",
        dots: false,
        infinite: true,
        adaptiveHeight: true,
        speed: 500,
        slidesToShow: 4,
        slidesToScroll: 1,
        responsive: [
            {
                breakpoint: 1024,
                settings: {
                    slidesToShow: 3,
                    slidesToScroll: 3,
                    infinite: true,
                    dots: true
                }
            },
            {
                breakpoint: 600,
                settings: {
                    slidesToShow: 2,
                    slidesToScroll: 2,
                    initialSlide: 2
                }
            },
            {
                breakpoint: 480,
                settings: {
                    slidesToShow: 1,
                    slidesToScroll: 1
                }
            }
        ]
    };

    const CenterCarousel = () => {
        return (
            <Slider {...centerAlignedCarouselSettings}>
                {
                    this.props.carouselData.map((item, index) => {
                        return (
                            <div className="carousel-card center">
                                <div className="carousel-image">
                                    <img src={item.image} alt={`${item.place}`} />
                                </div>
                                <div className="carousel-text">
                                    <p className="days">
                                        DAY {item.days}
                                    </p>
                                    <p className="place">
                                        {item.place}
                                    </p>
                                    <p className="description">
                                        {item.description}
                                    </p>
                                </div>
                            </div>
                        )
                    })
                }
            </Slider>
        )
    }

    const LeftCarousel = () => {
        return (
            <Slider {...leftAlignedCarouselSettings}>
                {
                    this.props.carouselData.map((item, index) => {
                        return (
                            <div className="carousel-card">
                                <div className="wrapper left">
                                    <div className="carousel-image">
                                        <img src={item.image} alt={`${item.place}`} />
                                    </div>
                                    <div className="carousel-text">
                                        <p className="days">
                                            {item.number}
                                        </p>
                                        <p className="description">
                                            {item.description}
                                        </p>
                                    </div>
                                </div>
                            </div>
                        )
                    })
                }
            </Slider>
        )
    }

    return (
        <div className="carousel-wrapper" >
            {this.props.leftAligned ? <LeftCarousel /> : <CenterCarousel />}
        </div>
    );
}
 

ОБНОВЛЕНИЕ 15.09.21

Я обнаружил, что компонент, похоже, перерисовывается только тогда, когда я использую функцию afterChange обратного вызова на карусели. Ссылка на документацию