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

329
Views
Reaccionar: setTimeout no se borra dentro del gancho useEffect

Actualmente, mi aplicación cambia a la página /about de después de 5 segundos de una introducción en la página /home . Quiero romper este tiempo de espera si alguien cambia manualmente la página.

Para esto tengo un estado de introDisplayed que es false por defecto. Al hacer clic en un enlace dentro de la aplicación, la introDisplayed se está convirtiendo en true .

¿Por qué setTimeout dentro de useEffect no se borra? Como referencia, he enumerado todos mis intentos sobre este asunto.

aclaración: he intentado agregar introDisplayed solo a las dependencias dentro de useEffect, así como con history y setIntroDisplayed como lo sugiere eslint y no cambia nada en este caso

 const Page = ({ introDisplayed, setIntroDisplayed }) => { const history = useHistory() const location = useLocation() // useEffect(() => { // if (introDisplayed === false) { // setTimeout(() => { // setIntroDisplayed(true) // history.push("/about") // }, 5000) // } else clearTimeout() // }) // useEffect(() => { // if (introDisplayed === false) { // var timer = setTimeout(() => { // setIntroDisplayed(true) // history.push("/about") // }, 5000) // } else clearTimeout(timer) // }) useEffect(() => { const timer = setTimeout(() => { setIntroDisplayed(true) history.push("/about") }, 1000) if (introDisplayed === true) { return () => clearTimeout(timer) } }) return () }
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Creo que te olvidaste de agregar la dependencia en useEffect() .

 useEffect(() => { if(introDisplayed === true) return; const timer = setTimeout(() => { setIntroDisplayed(true) history.push("/about") }, 1000) return () => clearTimeout(timer) }, [introDisplayed])
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!