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

193
Vistas
¿Por qué mi React setstate no se actualiza inmediatamente?

Esta es mi función

 onSelectAction = (x, o) => { var { takeActionsOptions } = this.props.main console.log(o, "onSelectAction") var tempAction=_.cloneDeep(takeActionsOptions) _.keys(tempAction).map(a => { if(a === x.processCode) { tempAction[a].map((b)=>{ b.isSelected = b.id === o.id }) } else{ tempAction[a].map((b)=>{ b.isSelected = b.id === 0 }) } }) StoreActions.setState({ takeActionsOptions:tempAction}); this.onClickTakeAction(o, x) }

donde tempAction está cambiando la propiedad como yo quería. Pero cuando intento actualizar la tienda... esta {takeActionsOptions:tempAction} no se actualiza por primera vez. Después de 2-3 clics en la ubicación deseada, esto se actualiza. quiero actualizar inmediatamente en la tienda porque hay otra función que obtiene datos de la tienda y realiza otra operación.

esta es mi otra función que utiliza la opción "takeActionsOptions" de la tienda. entonces, si esa función no se actualiza, entonces esta función no funciona correctamente

 onClickTakeAction = (o, x) => { var { takeActionsOptions=[] } = this.props.main var selectedAction = takeActionsOptions[x.processCode].find(a => a.isSelected) if (selectedAction.id === 0) { hydro.msg.info("Please select an option.") return; } var tempAction=_.cloneDeep(takeActionsOptions) _.keys(tempAction).map(a => { tempAction[a].map((b)=>{ b.isSelected = b.id === 0 }) }) this.setState({takeActionsOptions:tempAction}) switch (selectedAction.id) { case 1: var userName = somecode.userName; if (userName.toUpperCase() === x.userName.toUpperCase()) { Actions.deleteSelectedProcess(x); } else { somecode.info("Not your Process") } break; case 2: Action.downloadLogs(x); break; } }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

var tempAction=_.cloneDeep(takeActionsOptions)

¿Qué está haciendo aquí la función cloneDeep? Si realiza alguna llamada a la API/Obtiene datos del servidor, debe esperar un momento para obtener los datos. Mientras tanto, puede desactivar el botón y mostrar algunos cargadores para interactividad.

Si está utilizando loadash para copiar en profundidad el objeto, hasta donde yo sé, las funciones de loadash tardan mucho tiempo en completarse según la CPU o el objeto que está tratando de copiar. Así que intente esperar un minuto y verifique si se está actualizando o no. Si se está actualizando, debe deshabilitar el botón hasta entonces.

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