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

194
Vistas
¿Cómo administro los intervalos con los controladores de eventos en React JS?

Estoy aprendiendo React JS y comencé a construir un reloj Pomodoro. No entiendo cómo iniciar un intervalo específico al hacer clic en un botón y detener el temporizador al hacer clic en un botón separado. Cuando hago clic en "reproducir", el temporizador se detiene a las 24:059. Cuando hago clic en el mismo botón, va a 24:058 y vuelve a 24:059 y luego se repite. Cuando vuelvo a hacer clic, pasa a 24:057, etc.

Cuando elimino la condición de switch(seconds) en decreaseTimer() y simplemente inserto setSeconds((seconds) => seconds - 1); los segundos disminuyen en 1 como se esperaba. ¿Cómo soluciono este problema? Agradezco toda la ayuda y los consejos aquí. ¡Gracias!

PomoTimer.js

 import { useEffect, useState } from "react"; const PomoTimer = (props) => { const [seconds, setSeconds] = useState(0); const [intervalId, setIntervalId] = useState(""); const [isSession, setSession] = useState(true); const startTimer = () => { let newIntervalId = setInterval(decreaseTimer, 1000); setIntervalId((intervalId) => newIntervalId); }; const stopTimer = () => { clearInterval(intervalId); }; const decreaseTimer = () => { switch (seconds) { case 0: props.onTimerMinuteChange(props.timerMinute - 1); setSeconds((seconds) => 59); break; default: setSeconds((seconds) => seconds - 1); break; } }; const resetTimer = () => { clearInterval(intervalId); props.resetTimer(); props.onPlayChange(false); setSeconds(0); }; return ( <section> <section> {/* <h4>{session === true ? "Session" : "Break"}</h4> */} <span>{props.timerMinute}</span> <span>:</span> <span>{seconds === 0 ? "00" : "0" + seconds}</span> </section> <section> <button onClick={startTimer}>Play</button> <button onClick={stopTimer}>Stop</button> <button onClick={resetTimer}>Refresh</button> </section> </section> ); }; export default PomoTimer;
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