尝试在 react js 中执行计数器时,最大调用堆栈大小超过。 我正在使用功能组件来创建计数器。这将从 0 开始,每次都会增加 10,直到达到最大限制。这是我的代码
const [initialCount, setInitialCount] = useState(0);
useEffect(() => {
const handleScoreAnimate = () => {
if (initialCount >= maxLimit) {
setInitialCount(maxLimit);
} else {
setInitialCount(initialCount + 10);
handleScoreAnimate();
}
}
if (initialCount === 0) {
handleScoreAnimate();
}
}, [initialCount]);
该错误是由于在useEffect
中对handleScoreAnimate
函数进行递归调用。
您可能会得到更好的解决方案,但您可以利用setTimeout
来实现这一点,
useEffect(() => {
const timer = setTimeout(()=>{
setInitialCount(c => c >= maxLimit ? maxLimit : c + 10)
},1000) //timeout can be adjusted according to your need
//This is to clear the timeout when component unmounts
return () => clearTimeout(timer);
}, [initialCount]);
演示