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

139
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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