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

201
Vistas
¿Es necesario poner esto en useMemo? (cálculos de fecha)

Uso un temporizador y quiero preguntarle si debo envolver esto con useMemo y devolución de llamada.

sin que:

 const [time, setTime] = useState(); const calculateInitialDuration = (endDate: string, today: Date): CountdownResult => { const futureDate = new Date(endDate) const days = differenceInDays(futureDate, today) const hours = differenceInHours(futureDate, today) % 24 const minutes = differenceInMinutes(futureDate, today) % 60 const seconds = differenceInSeconds(futureDate, today) % 60 return { days, hours, minutes, seconds } } useEffect(() => { const timer = setInterval(() => setTime(calculateInitialDuration(expire_date, new Date())), 1000); return () => clearInterval(timer); })

con notas

 const calculateInitialDuration = useCallback(() => { const days = calcDay; const hours = calcHours; const minutes = calcMinute; const seconds = calcSeconds; return { days, hours, minutes, seconds }; }, [time]); const calcDay = useMemo(() => (differenceInDays(new Date(expire_date), new Date())), [time]); const calcHours = useMemo(() => (differenceInHours(new Date(expire_date), new Date()) % 24), [time]); const calcMinute = useMemo(() => (differenceInMinutes(new Date(expire_date), new Date()) % 60), [time]); const calcSeconds = useMemo(() => (differenceInSeconds(new Date(expire_date), new Date()) % 60), [time]);

Entonces, ¿es necesario envolver todos los cálculos con memo o debo usar el simple sin useMemo?

el segundo problema no pierde 1 segundo, a veces pierde 2 segundos

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

No es una buena idea intentar conseguir una hora exacta diferente en el navegador. setInterval/setTimeout solo puede garantizarle un tiempo mínimo cuando se llamará a su función. En cuanto a la memorización: la recomendación habitual para usarlo: úselo para cálculos pesados O si pasa alguna variable a otro componente como accesorio. Por ejemplo:

 const memoized = useMemo(() => {....}, []) return <SomeComponent prop={memoized}/>

A menos que se encuentre en una de las situaciones anteriores y tenga problemas visibles con el rendimiento, el uso de memorización innecesaria puede terminar siendo peor para el rendimiento.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Si está tratando de calcular una diferencia de fecha, ¿no le gustaría que fuera de la instancia específica en la que se llamó al método?

IE En lugar de usar new Date() para cada llamada, ¿no tendría más sentido tener Date now = new Date(); y luego pasar now para cada llamada?

Como mínimo, eso eliminaría la pérdida en segundos, ¿no es así?

EDITAR: darse cuenta de que esta pregunta está relacionada con reaccionar, con lo que lamentablemente no estoy familiarizado. Si esta respuesta es de alguna manera correcta, entonces genial. De lo contrario, lo siento por hacerte perder el tiempo.

about 4 years ago · Juan Pablo Isaza Denunciar
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