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

130
Views
¿Por qué las funciones del componente React no se interrumpen/terminan cuando se cambia el estado?
function App() { const [buttonClick, setButtonClick] = useState('No') async function handleClick(){ setButtonClick('Yes') const sleep = (ms) ={return new Promise(resolve => setTimeout(resolve, ms))} await sleep(2000) console.log('this ran after state was changed') } return( <> <button onclick={handleClick}>Click me</> {buttonClick} </> ) }

¿Cómo es que si hago clic en el botón, que establece el estado de buttonClick, no sale de la función? Todavía duerme durante 2 segundos y luego registra mi mensaje en la consola.

Mi opinión es que, dado que hace que un componente se vuelva a renderizar, me llevaría a creer que la aplicación de función está regresando y se rompería con la función handleClick.

Mis pensamientos sobre por qué esto podría ser es que podría ser cuando se compila React, solo está almacenando el valor de la devolución en otro lugar, y en realidad no devuelve la función más amplia App ().

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Esto tiene más que ver con cómo funciona Javascript en lugar de React, haré todo lo posible para explicar:

  1. Cuando hace clic en el botón, se invoca la función handleClick .
  2. handleClick ahora está en la pila de llamadas y no terminará hasta que se devuelva un valor o se produzca un error.
  3. La primera instrucción en handleClick es actualizar el estado; sin embargo, actualizar el estado no terminará la invocación de handleClick e incluso si el componente se desmontara antes de que tuviera la oportunidad de finalizar, cualquier llamada a setButtonClick en un componente desmontado daría como resultado lo que se conoce como pérdida de memoria .
  4. Además, la naturaleza setTimeout y async de esta función terminará en varias partes del bucle de eventos , pero eso tiene poco que ver con la pregunta original.

Puede obtener más información sobre la naturaleza de las funciones de Javascript aquí .

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!