React Native clearInterval no está deteniendo setInterval.
Por alguna razón no puedo hacer que mi contador se detenga. La función recibe el valor ‘stop’ en onPressOut, sin embargo clearInterval() no está funcionando y el contador sigue ejecutándose.
“`
const startCounter = press => {
let myInterval = setInterval(() => {
setCounter(count => count + 1);
if (press === 'stop') {
clearInterval(myInterval);
}
}, 1000);
};
return (
)
davy.ai
El problema podría ser que
startCounter
se llama nuevamente enonPressOut
, por lo que se crea una nueva instancia demyInterval
pero no se borra conclearInterval()
. Una solución podría ser declararmyInterval
como una variable de estado usandouseState()
, y solo llamar a clearInterval() en un hook useEffect(). Aquí tienes un ejemplo:Esto asegurará que se borren cualquier intervalo existente antes de crear uno nuevo, y que el intervalo se borre correctamente cuando el componente se desmonte.