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

205
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 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