Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

103
Visualizações
¿Qué mal estoy haciendo aquí? tiempo actual a 2 minutos de cuenta regresiva

¿Qué está mal aquí? Estoy creando la hora actual en una cuenta regresiva de 2 minutos usando el momento js aquí. Estoy desfasando los problemas.

puedes ver SS

 const CountDownTimer = () => { const [duration, setDuration] = useState(null); const getFinalTime = useCallback((duration) => { const currentDuration = moment.duration(duration, "milliseconds"); let finalMinutes = currentDuration?.minutes(); let finalSeconds = currentDuration?.seconds(); finalMinutes = finalMinutes < 10 ? `0${finalMinutes}` : finalMinutes; finalSeconds = finalSeconds < 10 ? `0${finalSeconds}` : finalSeconds; return `${finalMinutes}:${finalSeconds}`; }, []); useEffect(() => { const startTimer = moment(billData?.createdAt); const endTimer = moment(billData?.createdAt).add(2, "minutes"); const duration = moment.duration(endTimer.diff(startTimer), "milliseconds"); const interval = setInterval(() => { const newDuration = moment .duration(duration - 1000, "milliseconds") .asMilliseconds(); setDuration(newDuration); }, 1000); return () => clearInterval(interval); }, [billData?.createdAt]); // in getFinalTime passing duration return <>{getFinalTime(duration)}</>; }; export default CountDownTimer;
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Parece que estás haciendo mucho trabajo innecesario para un temporizador de cuenta regresiva.

Vea a continuación para una implementación simple.

  • El componente de temporizador acepta un objeto Date límite.
  • El componente del temporizador tiene un estado interno que solo garantiza que se actualice cada segundo a través del efecto.
  • Calcular el tiempo restante es cuestión de calcular la diferencia de milisegundos entre la hora actual y la fecha límite, seguida de una operación div/mod para extraer minutos y segundos. (Puede agregar otro div/mod para obtener horas y minutos).

 function CountdownTimer({ deadline }) { const [, setUpdate] = React.useState(0); React.useEffect(() => { const interval = setInterval(() => { setUpdate((u) => u + 1); }, 1000); return () => clearInterval(interval); }, []); const timeLeftTotal = Math.max( 0, Math.ceil((+deadline - +new Date()) / 1000) ); const timeLeftMinutes = Math.floor(timeLeftTotal / 60); const timeLeftSeconds = timeLeftTotal % 60; const mmss = [timeLeftMinutes, timeLeftSeconds] .map((s) => String(s).padStart(2, "0")) .join(":"); return <div>Time left: {mmss}</div>; } function getDeadline(secondsInFuture) { return new Date(+new Date() + secondsInFuture * 1000); } function App() { const [deadline, setDeadline] = React.useState(() => getDeadline(120)); return ( <div className="App"> <CountdownTimer deadline={deadline} /> <hr /> <button onClick={() => setDeadline(getDeadline(60))}> Reset deadline to 1 minute in the future </button> </div> ); } ReactDOM.render(<App />, document.getElementById("root"));
 <script src="https://cdnjs.cloudflare.com/ajax/libs/react/17.0.0/umd/react.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.0/umd/react-dom.production.min.js"></script> <div id="root"></div>

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda