response-slick, slickNext срабатывает автоматически после повторного рендеринга при вызове на предыдущем рендере - PullRequest
0 голосов
/ 29 июня 2018

Ниже приведен мой код, при нажатии на выпадающий элемент, после вызова this.slickNext () будет запущено событие обновления, и этот компонент класса будет перерисован. Но метод slickNext, похоже, переносится на повторный рендеринг без щелчка, поэтому автоматически показывает второй слайд по порядку.

Могу ли я получить помощь по этому вопросу, пожалуйста? Спасибо.

class CategorySlider extends Component {
constructor(props) {
    super(props);
}

next() {
    this.slider.slickNext();
}
previous() {
    this.slider.slickPrev();
}
render() {
    const categorySlide = (slide,markNotRequired) =>
    (
        <Dropdown
            trigger={trigger}
            icon={null}
            >
            <Dropdown.Menu>
                <Dropdown.Item text="Not required" onClick={() => { this.next(); }}/>
                <Dropdown.Item text="Done" />
            </Dropdown.Menu>
            </Dropdown>
    );

    const settings = {
    prevArrow: <PrevArrow />,
    nextArrow: <NextArrow />,
    slidesToShow: 1,
    slidesToScroll: 1,
    easing: 'linear'
    };

    return (
        <div>
        <Slider ref={slider => (this.slider = slider)} {...settings}>
            {
            _.map(_.filter(_.values(this.props.slidesVM.slides), slide => slide.isRequired), (slide,markNotRequired) => categorySlide(slide, this.props.markNotRequired))
            }
        </Slider>
        </div >
    )}

}

1 Ответ

0 голосов
/ 20 июля 2018

Сделал некоторые исследования и покопался в коде, выяснил, что метод prev и next фактически изменили состояние компонента, установили смещение для state.currentSlide. Таким образом, при обновлении компонента смещение все еще применяется ~~

Не уверен, сколько вы можете сделать на этом этапе.

...