【发布时间】:2021-01-13 21:14:00
【问题描述】:
我想每 2 秒更新一次状态并渲染一些图像 这绝对没问题
useEffect(() => {
setTimeout(() => {
if (workImages.currentIndex > workImages.items.length - 2) {
setWorkImages({ ...workImages, currentIndex: 0 });
} else {
setWorkImages({
...workImages,
currentIndex: ++workImages.currentIndex,
});
}
}, 2000);
}, [workImages]);
这仅适用于其他情况
useEffect(() => {
setInterval(() => {
if (workImages.currentIndex > workImages.items.length - 2) {
setWorkImages({ ...workImages, currentIndex: 0 });
} else {
setWorkImages({
...workImages,
currentIndex: ++workImages.currentIndex,
});
}
}, 2000);
}, []);
谁能解释一下原因?
【问题讨论】:
-
是的,因为 setInterval 在每个给定时间(在本例中为 2 秒或 2000 密耳)后执行函数。但是 setTimeout 会在给定时间后执行一次函数。
标签: reactjs react-hooks settimeout setinterval setstate