Quiero saber qué sucedió si defino la función setInterval repetidamente en la misma variable en useEffect de gancho de reacción.
Verifiqué que la variable tiene un nuevo valor de id de setInterval cada definición. Pero me pregunto si quedó una instancia en la memoria sobre el temporizador setInterval anterior, incluso si el nuevo setInterval se definió en la misma variable.
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]);¿Qué sucede si asigno repetidamente a la misma variable?
No es la misma variable. Está creando una nueva variable de timer nueva cada vez que se ejecuta el efecto. Todos son independientes.
Pero me pregunto si quedó una instancia en la memoria sobre el
timeranterior
Si y no. La función de limpieza devuelta por la devolución de llamada useEffect es un cierre sobre el timer , y React la mantiene en la memoria todo el tiempo que sea necesario. En la práctica, se llamará una vez cuando el componente se desmonte o cambien sus dependencias, y se puede recolectar basura después, llevándose consigo la variable timer respectiva.