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

153
Vistas
¿Cómo debe garantizar el orden de actualización de estado en reaccionar?

Tengo un par de estados establecidos en los proveedores que activan una serie de efectos en mi aplicación de reacción. Se suceden espalda con espalda en un gancho. El segundo estado establecido tiene algunos efectos que activa que necesitan asegurarse de que el primer gancho se haya propagado completamente a través de la aplicación. Actualmente, el primero no ha realizado todos los cambios necesarios, por lo que algunas funciones activadas por el segundo provocan un comportamiento extraño. ¿Cómo se asegura de que el segundo solo ocurra después de que el primero se propague por completo?

 setSomeStateValue(x); setValueToTriggersEffectsThatRelyOnUpdatesFromTheOther(y);

Aquí hay algunas cosas que he hecho que funcionan pero tienen sus problemas:

1.) establecer tiempo de espera (..., 0)

 setSomeStateValue(x); setTimeout(otherSetState,0);

Esto empuja el segundo a un lote posterior. Me gusta este porque no implica agregar código adicional para observar otras variables de estado que quizás no deberían preocupar al código, pero parece un poco de magia negra y posiblemente podría causar problemas difíciles de depurar.

2.) monitorear las cosas que necesito configurar antes de llamar al segundo estado establecido

Este parece un poco más legible, pero implica importar y ver cosas que pueden no tener sentido que pertenezcan al código relacionado. Básicamente agregando un useEffect que observa todo lo que necesito configurar antes de que ocurra la segunda llamada. Además, si algo cambia con respecto a lo que se necesita para tener lista la segunda llamada, entonces este código también tendrá que cambiar, ya que la primera solución no debería requerir una actualización.

Ambos funcionan pero tienen sus inconvenientes. Me gustaría refactorizar la segunda llamada para dar cuenta de estos problemas, pero sería un refactor demasiado grande en este punto para convertirlo en una opción factible. ¿Hay alguna forma nativa de garantizar esta u otra estrategia aquí que me falta? Y si no, ¿cuál de las soluciones anteriores es mejor?

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

0

En situaciones en las que setState depende de un setState anterior o de un estado específico del componente, puede hacer dos cosas. Primero,

  1. use el segundo argumento de setState. Aquí, la devolución de llamada solo se invoca una vez que setState termina de actualizar el estado. Por lo tanto, puede obtener el comportamiento síncrono deseado.
 setState(updater, [callback])
  1. Utilice el método de ciclo de vida componentDidUpdate (para Hooks, sería solo otro useEffect). Si no desea tener setStates complejos en su componente, simplemente tenga un efecto con una dependencia en el estado necesario y realice sus operaciones allí.
 React.useEffect(() => { if( desired_state){ secondSetState() }, [ desired_state ] }
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