Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

86
Vistas
¿Por qué mi variable gloval setInterval ID no está disponible para una función?

Estoy escribiendo una aplicación de temporizador simple y usando setInterval por primera vez. El proyecto está en mecanografiado de reacción y uso el enlace useReducer para administrar el estado.

El proyecto requiere dos temporizadores separados, sesión y descanso, lo que puede explicar parte del código. El proyecto también requiere un botón para iniciar y detener el temporizador, por lo tanto, estoy usando una sola función.

He redactado mi reductor y tipos porque el problema, según tengo entendido, no los involucra, sino un uso simple de setInterval que aún no entiendo.

Cuando se llama a la función startStopTimer por segunda vez, el ID de intervalo no está definido, aunque se declara globalmente.

 const App = () => { const [timerState, dispatch] = useReducer(timerStateReducer, initialTimerState ); let intervalID: NodeJS.Timer; const startStopTimer = () => { let name: string = timerState.session.count !== 0 ? 'session' : 'break'; if (timerState[name].running) { console.log('stopping timer' + intervalID); //reducer sets running boolean variable to false dispatch({type: ActionKind.Stop, name: name}); clearInterval(intervalID); } else { //reducer sets running boolean variable to true dispatch({type: ActionKind.Start, name: name}); intervalID = setInterval(() => { dispatch({type: ActionKind.Decrease, name: name}); }, 1000); } }; return ( //redacted JSX code <button onClick={startStopTimer}>Start/Stop</button> )

Intenté pasar onClick como una función de flecha (en lugar de una referencia, ¿creo?) Y se comporta de la misma manera. Intenté simplificar esto con useState, pero me encontré con otro conjunto de problemas con useState y setInterval, así que volví al enlace useReducer.

¡Gracias!

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda