Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

200
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!