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

121
Vistas
No se puede encontrar la diferencia entre dos tipos de actualizaciones de estado con matrices

Por lo general, veo este tipo de actualización de estado (esto es solo un ejemplo):

 const NumArray = () => { const [numbers, setNumbers] = useState([]) return ( <div> <p>Numbers:[ {numbers} ]</p> ///////////////////// <button onClick={() => setNumbers(prevState => [...prevState, 1])}> ///////////////////// Click me </button> </div> ) }

Pero si uso esta variación, todavía funciona:

 const NumArray = () => { const [numbers, setNumbers] = useState([]) return ( <div> <p>Numbers:[ {numbers} ]</p> ///////////////////// <button onClick={() => setNumbers([...numbers, 1])}> ///////////////////// Click me </button> </div> ) }

Mi pregunta es, ¿cuál es la diferencia entre las dos actualizaciones de estado? ¿Por qué la gente tiende a usar el que tiene la devolución de llamada?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

useState es asíncrono. No actualiza el estado inmediatamente, pero tiene una cola que se usa para actualizar el objeto de estado. Esto se hace para mejorar el rendimiento de la representación de los componentes de React.

Aunque es asíncrona, la función useState no devuelve promesa. Por lo tanto, no podemos adjuntarle un controlador then o usar async/await para obtener los valores de estado actualizados. Y si tenemos algunas variables de estado que deben actualizarse de acuerdo con otra variable de estado, no podemos confiar en la variable de estado actualizada sincrónicamente.

La actualización de estado generalmente ocurre en el siguiente renderizado, pero incluso eso puede variar. Las actualizaciones por lotes dependen de la reacción, y no hay nada que podamos hacer para cambiar eso.

Así que escribiéndolo así:

 <button onClick={() => setNumbers(prevState => [...prevState, 1])}>

garantiza que prevState es en realidad un estado anterior. Mientras que al escribirlo sin devolución de llamada, no nos importa mucho si es el estado anterior exacto o no.

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