Estoy usando Next.js y tengo el siguiente gancho;
export function useStopwatch(defaultValue = 0) { const [timer, setTimer] = useState(defaultValue) const {set: startInterval, clear: stopInterval} = useInterval() var offset = 0; function delta() { let now = Date.now() let delta = now - offset; offset = now return delta } function update() { setTimer(prev => prev+delta()) } function start() { offset = Date.now(); startInterval(update, 1) } function reset() { stopInterval() setTimer(0) } return { time: Round(timer/1000, 2), start, stop: stopInterval, reset } } export function useInterval() { const [reference, setReference] = useState<number | undefined>() function set(callback: () => void, delay: number) { if (!reference) { setReference(window.setInterval(callback, delay)) } } function clear() { if (reference) { clearInterval(reference) setReference(undefined) } } return { set, clear } } Este código funciona como se esperaba en el navegador (modo estricto desactivado) cuando muestro el time (el time actúa como un cronómetro) desde useStopwatch() , cuando enciendo el modo estricto desde la configuración. el gancho parece tardar un poco en actualizar su estado, lo que significa que el cronómetro se detendrá durante uno o dos segundos antes de agregar unos milisegundos al cronómetro.
siguiente.config.js
module.exports = { reactStrictMode: true, } Por lo que puedo decir, el modo estricto solo afecta el desarrollo y establece varias comprobaciones para ayudarlo a escribir un código más limpio/seguro. Sin embargo, con el modo estricto habilitado, el timer parece actualizarse mucho más lento. Descubrí que setTimer se activa correctamente, pero el estado no se establece con tanta frecuencia.
¿Por qué es esto?
Revisé la consola y no hay advertencias/errores.