我用react slick PrevNextMethod
https://react-slick.neostack.com/docs/example/previous-next-methods
我将Infinite设置为false,因此轮播中不会显示任何循环。 现在,如果当前显示的幻灯片之前没有幻灯片可用,我想禁用上一个按钮,反之亦然,要禁用下一个按钮。
官方文档中没有任何选项。反正有实现这一目标的方法吗?
答案 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
保持在某处的状态来对其进行跟踪即可。
答案 1 :(得分:0)
使用自定义箭头,您可以获得自定义箭头组件上的 className 属性,当它没有更多幻灯片要显示时,react-slick 将类 slick-disabled
添加到该箭头,因此请记住这一点,您可以检查 { {1}},更多详情如下:
className?.includes("slick-disabled")