反应光滑 slickSetOption
React Slick slickSetOption
我正在为我的项目使用 React-Slick (https://github.com/akiran/react-slick)。
我希望能够动态更改我提供给滑块的设置。
对于 slickjs (https://github.com/kenwheeler/slick) 这可以使用 slickSetOption
.
来完成
我在阅读文档后意识到这在 React Slick 中是不可能的。
该插件的贡献者之一也发布了以下内容:
slickSetOption will not be implemented, those effects be achieved by
passing props via state from the wrapper component
这让我觉得应该实际上可以动态更改滑块的设置。
我的实现是这样的
<Slider
dots={true}
infinite={true}
speed={500}
slidesToShow={1}
slidesToScroll={1}
autoplaySpeed={2000}
autoplay={props.autoplay} // even if the value is changed, autoplay stays to it's initial setting
>
{images}
</Slider>
我使用 React Slick 的 playground 将其放在一起来演示这个问题:
https://codesandbox.io/s/react-slick-playground-unyot
我在这里错过了什么?
我认为这是组件中的错误,可能某些内部状态未更改。作为解决方法,您可以在 autoplay
属性更改时更改 key
属性,这将强制重新创建 Slider
组件:
state = {
dots: true,
autoplay: false,
sliderKey: Date.now()
};
useAutoplay() {
this.setState({
autoplay: true,
sliderKey: Date.now()
});
}
<Slider key={this.state.sliderKey} {...this.state}>
</Slider>
我正在为我的项目使用 React-Slick (https://github.com/akiran/react-slick)。 我希望能够动态更改我提供给滑块的设置。
对于 slickjs (https://github.com/kenwheeler/slick) 这可以使用 slickSetOption
.
我在阅读文档后意识到这在 React Slick 中是不可能的。 该插件的贡献者之一也发布了以下内容:
slickSetOption will not be implemented, those effects be achieved by passing props via state from the wrapper component
这让我觉得应该实际上可以动态更改滑块的设置。
我的实现是这样的
<Slider
dots={true}
infinite={true}
speed={500}
slidesToShow={1}
slidesToScroll={1}
autoplaySpeed={2000}
autoplay={props.autoplay} // even if the value is changed, autoplay stays to it's initial setting
>
{images}
</Slider>
我使用 React Slick 的 playground 将其放在一起来演示这个问题: https://codesandbox.io/s/react-slick-playground-unyot
我在这里错过了什么?
我认为这是组件中的错误,可能某些内部状态未更改。作为解决方法,您可以在 autoplay
属性更改时更改 key
属性,这将强制重新创建 Slider
组件:
state = {
dots: true,
autoplay: false,
sliderKey: Date.now()
};
useAutoplay() {
this.setState({
autoplay: true,
sliderKey: Date.now()
});
}
<Slider key={this.state.sliderKey} {...this.state}>
</Slider>