javascript 在Next js中使用tailwind为我的旋转木马设置计时器

icnyk63a  于 2023-02-21  发布在  Java
关注(0)|答案(2)|浏览(127)

我想设置一个滑块,3秒后,它滑到下一个图像。我尝试了不同的自定义css,但似乎没有工作。我正在使用一个轮播组件流咬。

import { Carousel } from "flowbite-react";

export default function Slider() {
  return (
    <div className="h-56 sm:h-64 xl:h-80 2xl:h-96">
      <Carousel>
        <img
          src="carousel-1.jpg"
          alt="..."
        />
        <img
          src="carousel-2.jpg"
          alt="..."
        />
      </Carousel>
    </div>
  );
}
a9wyjsp7

a9wyjsp71#

有不同的方法来实现这一点,但是最简单的方法是使用flow bite已经提供的方法。

import { Carousel } from "flowbite-react";

export default function Slider() {
  return (
    <div className="h-56 sm:h-64 xl:h-80 2xl:h-96">
      <Carousel slideInterval={3000}>
        <img
          src="carousel-1.jpg"
          alt="..."
        />
        <img
          src="carousel-2.jpg"
          alt="..."
        />
      </Carousel>
    </div>
  );
}
0s7z1bwu

0s7z1bwu2#

您可以通过使用setTimeout或setInterval更新轮播的状态来完成此操作。
下面是一个例子:

import { useState, useEffect } from "react";
import { Carousel } from "flowbite-react";

export default function Slider() {
  const [activeIndex, setActiveIndex] = useState(0);
  const images = ["carousel-1.jpg", "carousel-2.jpg"];

  useEffect(() => {
    const interval = setInterval(() => {
      setActiveIndex((activeIndex + 1) % images.length);
    }, 3000);

    return () => clearInterval(interval);
  }, [activeIndex, images.length]);

  return (
    <div className="h-56 sm:h-64 xl:h-80 2xl:h-96">
      <Carousel activeIndex={activeIndex} onSelect={setActiveIndex}>
        {images.map((image) => (
          <img key={image} src={image} alt="..." />
        ))}
      </Carousel>
    </div>
  );
}

在这个例子中,useState存储活动映像的索引,useEffect设置计时器。在useEffect中,setInterval每3秒更新活动映像的索引。clearInterval在拆卸组件时清除计时器。接下来,我们将活动图像的索引和setActiveIndex函数传递给Carousel组件,并使用map渲染图像。

相关问题