【发布时间】:2020-12-14 17:16:31
【问题描述】:
我有一个 useState 变量,我想每 5 秒更新一次,增量为 1,但是我希望它停止计数并在达到数组长度后再次从 0 开始。这是我到目前为止所拥有的。现在控制台日志令人困惑,它开始工作,然后数字开始每秒或更快地输出。这在我不在增量函数中运行 SetShowNum 时有效,但这是我需要的功能。
任何帮助将不胜感激。谢谢
const [showNum, SetShowNum] = useState(0)
useEffect(() => {
var i = 0
var interval = setInterval(increment, 5000)
var stop = data.allSanityProducts.edges.length // right now equates to 4
function increment() {
i = i + 1
if (i === stop) {
i = 0
}
console.log(i)
SetShowNum(i)
}
})
【问题讨论】:
-
这能回答你的问题吗? setInterval in a React app。有一些钩子示例。
-
你还得在useEffect清理中有一个clearInterval
-
我正在阅读有关 clearinterval 在清理中的信息,但不确定如何根据反应文档完成该操作
标签: javascript reactjs