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

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

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