Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

156
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda