在 useEffect 挂钩中将 setInterval 重新定义为变量发生了什么?
what happend re-define setInterval to variable in useEffect hook?
我想知道如果我在 react hook useEffect 中对同一个变量重复定义 setInterval 函数会发生什么。
我检查变量每次定义都有新的 setInterval id 值。
但是我想知道是否有关于以前的 setInterval 计时器的实例保留在内存中,即使新的 setInterval 定义在同一个变量中??
useEffect(() => {
const timer = setInterval(
() => {
if (count < elementLength - 1) {
boolean.current = false;
setCount(prev => prev + 1);
} else {
boolean.current = true;
setCount(0);
}
},
boolean.current ? 50 : 2500
);
return () => {
clearInterval(timer);
};
}, [count]);
What happens if I assign repeatedly to same variable?
这不是相同的变量。每次效果运行时,它都会创建一个全新的 timer
变量。他们都是独立的。
But I wonder is there instance remained in memory about previous timer
是也不是。 useEffect
回调返回的清理函数是 timer
上的闭包,只要需要,React 就会将其保存在内存中。实际上,它会在组件卸载或其依赖项发生变化时调用一次,之后可以 garbage-collected ,并带有相应的 timer
变量。
我想知道如果我在 react hook useEffect 中对同一个变量重复定义 setInterval 函数会发生什么。
我检查变量每次定义都有新的 setInterval id 值。 但是我想知道是否有关于以前的 setInterval 计时器的实例保留在内存中,即使新的 setInterval 定义在同一个变量中??
useEffect(() => {
const timer = setInterval(
() => {
if (count < elementLength - 1) {
boolean.current = false;
setCount(prev => prev + 1);
} else {
boolean.current = true;
setCount(0);
}
},
boolean.current ? 50 : 2500
);
return () => {
clearInterval(timer);
};
}, [count]);
What happens if I assign repeatedly to same variable?
这不是相同的变量。每次效果运行时,它都会创建一个全新的 timer
变量。他们都是独立的。
But I wonder is there instance remained in memory about previous
timer
是也不是。 useEffect
回调返回的清理函数是 timer
上的闭包,只要需要,React 就会将其保存在内存中。实际上,它会在组件卸载或其依赖项发生变化时调用一次,之后可以 garbage-collected ,并带有相应的 timer
变量。