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; } }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.