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

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

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 Report

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 Report

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