在没有 setState 的情况下动态设置 react slick autoplayspeed

Posted

技术标签:

【中文标题】在没有 setState 的情况下动态设置 react slick autoplayspeed【英文标题】:Set react slick autoplayspeed dynamically without setState 【发布时间】:2021-05-04 14:41:05 【问题描述】:
    return 
      dots: false,
      arrows: true,
      infinite: true,
      speed: 300,
      slidesToShow: 1,
      centerMode: true,
      autoplay: true,
      cssEase: "linear",
      autoplaySpeed: 2000,
      centerPadding: '0px',
      prevArrow: <this.PrevArrow />,
      nextArrow: <this.NextArrow />,
    ;
   
 PrevArrow(props: any) 
    const  onClick  = props;
    return (
      <div className="left" style= position: "absolute", right: "42px", bottom: "0", padding: "10px 15px", backgroundColor: "rgba(198, 198, 198)", zIndex: 999, height: "44px"  onClick=onClick><i className="fas fa-chevron-left"></i></div>
    );
  

  NextArrow(props: any) 
    const  onClick  = props;
    return (
      <div className="right" style= position: "absolute", right: "0px", bottom: "0", padding: "10px 15px", backgroundColor: "rgba(198, 198, 198)", height: "44px"  onClick=onClick ><i className="fas fa-chevron-right"></i></div>
    );
  

这是我的幻灯片设置

durationArray: any = [2000,2000,3000,5000,7000,10000]

这是我的幻灯片持续时间数组。

我想在 2000 毫秒内滑动第一张幻灯片 第二张幻灯片 2000 毫秒 第三张幻灯片 3000 毫秒等等。

而且我想在没有 setState 的情况下这样做

我该怎么做?

【问题讨论】:

【参考方案1】:

我用我的解决方案为您准备了一个示例。我正在使用 setState (我担心没有它你无法做到)但在我的情况下 Slider 并没有从头开始。点击下一个链接

https://codesandbox.io/s/react-slick-autospeed-7jlew?file=/src/App.js

const getSpeedForSlide = (slide) => 
  switch (slide) 
    case 1:
      return 1000;
    case 2:
      return 2000;
    case 3:
      return 3000;
    case 4:
      return 4000;
    default:
      return 1000;
  
;

export default function App() 
  const [speed, setSpeed] = useState(1000);
  const handleAfterChange = useCallback((slide) => 
    setSpeed(getSpeedForSlide(slide));
  , []);
  return (
    <div className="App">
      <Slider afterChange=handleAfterChange autoplaySpeed=speed autoplay>
        [1, 2, 3, 4].map((item) => (
          <div key=item>item</div>
        ))
      </Slider>
    </div>
  );

【讨论】:

以上是关于在没有 setState 的情况下动态设置 react slick autoplayspeed的主要内容,如果未能解决你的问题,请参考以下文章

在没有 setstate 的情况下更改轮播更改的 AppBar 标题值

当 API 没有该字段时的 setState

无法使用 setState onClick 使变量进入状态

React Native - Redux 不会立即更新

如何修复 不要直接改变状态。将 setState() 与数组一起使用?

使用字符串动态响应 setState