如果当前幻灯片在react slick之前或之后没有可用的幻灯片,请禁用Prev或Next按钮。 (上一个下一个方法)

时间:2019-07-12 12:26:50

标签: reactjs react-slick

我用react slick PrevNextMethod
https://react-slick.neostack.com/docs/example/previous-next-methods

我将Infinite设置为false,因此轮播中不会显示任何循环。 现在,如果当前显示的幻灯片之前没有幻灯片可用,我想禁用上一个按钮,反之亦然,要禁用下一个按钮。

官方文档中没有任何选项。反正有实现这一目标的方法吗?

2 个答案:

答案 0 :(得分:0)

是的,可以使用beforeChange回调来完成。

这是我根据文档中的一个示例创建的基本示例:

export default class SimpleSlider extends Component {
  state = { index: 0 };
  next = () => {
    this.slider.slickNext();
  };
  previous = () => {
    this.slider.slickPrev();
  };
  beforeChange = (prev, next) => {
    this.setState({ index: next });
  };
  render() {
    const settings = {
      infinite: false,
      speed: 500,
      slidesToShow: 1,
      slidesToScroll: 1,
      arrows: true,
      beforeChange: this.beforeChange
    };
    const index = this.state.index;
    return (
      <div>
        <h2> Single Item</h2>
        <Slider {...settings} ref={c => (this.slider = c)}>
          <div>
            <h3>1</h3>
          </div>
          <div>
            <h3>2</h3>
          </div>
          <div>
            <h3>3</h3>
          </div>
          <div>
            <h3>4</h3>
          </div>
          <div>
            <h3>5</h3>
          </div>
          <div>
            <h3>6</h3>
          </div>
        </Slider>
        <div style={{ textAlign: "center" }}>
          <button
            className="button"
            disabled={index === 0}
            onClick={this.previous}
          >
            Previous
          </button>
          <button className="button" disabled={index === 5} onClick={this.next}>
            Next
          </button>
        </div>
      </div>
    );
  }
}

您只需要通过将index保持在某处的状态来对其进行跟踪即可。

基本codepen here

答案 1 :(得分:0)

使用自定义箭头,您可以获得自定义箭头组件上的 className 属性,当它没有更多幻灯片要显示时,react-slick 将类 slick-disabled 添加到该箭头,因此请记住这一点,您可以检查 { {1}},更多详情如下:

className?.includes("slick-disabled")