【发布时间】:2021-11-27 18:50:25
【问题描述】:
我正在尝试设置一个图像轮播,当您将鼠标悬停在 div 上时,该轮播会循环显示 3 张图像。我在尝试弄清楚如何在循环到达第三张图像后重置循环时遇到了麻烦。我需要重置 setInterval 以便当您将鼠标悬停在 div 上时它会重新启动并不断循环显示图像。然后当您将鼠标移出 div 时,循环需要停止并重置为初始状态 0。这是代码沙箱:
https://codesandbox.io/s/pedantic-lake-wn3s7
import React, { useState, useEffect } from "react";
import { images } from "./Data";
import "./styles.css";
export default function App() {
let timer;
const [count, setCount] = useState(0);
const updateCount = () => {
timer = setInterval(() => {
setCount((prevCount) => prevCount + 1);
}, 1000);
if (count === 3) clearInterval(timer);
};
const origCount = () => {
clearInterval(timer);
setCount((count) => 0);
};
return (
<div className="App">
<div className="title">Image Rotate</div>
<div onMouseOver={updateCount} onMouseOut={origCount}>
<img src={images[count].source} alt={images.name} />
<p>count is: {count}</p>
</div>
</div>
);
}
【问题讨论】: