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

144
Visualizações
No puedo entender por qué estas dos piezas de código funcionan de manera diferente

Este fragmento de código funciona bien e incrementa el conteo cada segundo.

 import React, { useEffect, useState } from 'react' function IntervalHookCounter() { const [count, setCount] = useState(0) const tick = () => { console.log("Called tick") setCount(prevCount => prevCount+1) } useEffect(() => { const interval = setInterval(tick, 1000) return () => { clearInterval(interval) } }, []) return ( <div> <h1>{count}</h1> </div> ) } export default IntervalHookCounter

Pero este fragmento de código solo sube 1 conteo y luego se detiene

 import React, { useEffect, useState } from 'react' function IntervalHookCounter() { const [count, setCount] = useState(0) const tick = () => { console.log("Called tick") setCount(count+1) } useEffect(() => { const interval = setInterval(tick, 1000) return () => { clearInterval(interval) } }, []) return ( <div> <h1>{count}</h1> </div> ) } export default IntervalHookCounter

Cualquier idea de por qué esto podría ser el caso. Por favor, ayuda, esto se está volviendo muy confuso.

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

El primer bloque de código : utiliza el previous state para incrementar el count , es decir, toma el valor anterior e incrementa en 1. El estado anterior se actualiza en la devolución de llamada

En su segundo bloque de código , - setCount(count+1) no tiene acceso al nuevo valor de count en el procesamiento posterior porque useEffect() no se invoca la segunda vez. count siempre tiene el valor de 0 dentro de la devolución de llamada setInterval, ( 0 es el estado default )

about 4 years ago · Juan Pablo Isaza Relatório

0

Esta línea te jode: setCount(count+1)

porque el count es constante desde el alcance externo y siempre es 0 (incluso si se le let nunca reasignarlo), por lo que efectivamente termina siempre con 0+1 en el segundo ejemplo

¡salud!

about 4 years ago · Juan Pablo Isaza Relatório

0

esto tiene que ver con los cierres.

  • En resumen, el primer tick asegúrese de que agreguemos 1 al estado anterior cada segundo.

  • el segundo suma 1 para contar y para la función tic la cuenta siempre es 0 (el primer valor de la cuenta) por lo que la función se dispara cada segundo pero count + 1 siempre es 1 porque la cuenta siempre es 0 para la función tic

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