Skip to main content

useCountdown

Hook para crear un temporizador cuenta regresiva.

Uso

import { useCountdown } from '@camarauth/sdk/react';

function Timer() {
  const { timeLeft, formattedTime, isExpired, start, restart } = useCountdown({
    seconds: 180,
    onExpire: () => console.log('¡Expiró!')
  });

  return (
    <div>
      <p>Tiempo restante: {formattedTime}</p>
      {isExpired && <pTiempo agotado!</p>}
      <button onClick={start}>Iniciar</button>
      <button onClick={() => restart(180)}>Reiniciar</button>
    </div>
  );
}

Parámetros

options
CountdownOptions
required
Opciones del temporizador

CountdownOptions

seconds
number
required
Segundos iniciales
autoStart
boolean
default:"false"
Iniciar automáticamente
onExpire
() => void
Callback cuando expira

Valor de retorno

timeLeft
number
Segundos restantes
formattedTime
string
Tiempo formateado como MM:SS
isExpired
boolean
Si el tiempo expiró
isRunning
boolean
Si el temporizador está corriendo
start
() => void
Iniciar el temporizador
stop
() => void
Detener el temporizador
restart
(seconds?: number) => void
Reiniciar con nuevos segundos

Ejemplo

import { useCountdown } from '@camarauth/sdk/react';

function ExamTimer() {
  const { 
    formattedTime, 
    isExpired, 
    isRunning,
    start, 
    stop, 
    restart 
  } = useCountdown({
    seconds: 3600, // 1 hora
    onExpire: () => alert('¡Tiempo de examen terminado!')
  });

  return (
    <div className={`timer ${isExpired ? 'expired' : ''}`}>
      <div className="time-display">
        {formattedTime}
      </div>
      
      <div className="controls">
        {!isRunning ? (
          <button onClick={start}>▶️ Iniciar</button>
        ) : (
          <button onClick={stop}>⏸️ Pausar</button>
        )}
        
        <button onClick={() => restart(3600)}>
          🔄 Reiniciar
        </button>
      </div>
      
      {isExpired && (
        <div className="expired-message">
          ⏰ ¡Tiempo agotado!
        </div>
      )}
    </div>
  );
}

Véase también