Actualmente muestro modales según el objeto updateReminderResponse .
Por el momento, puede hacer clic en el botón Enviar varias veces.
¿Cómo puedo deshabilitar el botón cuando se hace clic en el botón, hasta UpdateVehicleReminder y saveNotifications se hayan resuelto, y también updateReminderResponses como se define:
const [disabled, setDisabled] = useState(false); const onSubmit = async () => { const success = await tryBiometrics(); if (success) { setdisabled(true); ... tagNotifications(state); dispatch( UpdateVehicleReminder( ... ) ); try { await saveNotifications(state.notificationList); } catch (e) { logger.error("Error saving notifications", e); throw e; } } setdisabled(false); }; const disableSubmit = disabled && typeof updateReminderResponses !== "undefined" ? true : false; <Button title="example" buttonStyle={[buttons.primary]} titleStyle={buttons.primaryTitle} onPress={() => onSubmit()} disabled={disableSubmit} // disable until updateReminderResponse is defined />; { updateReminderResponse && updateReminderResponse.updateFailure && ( <MessageModals showModal callback={closeFailModal} /> ); } { updateReminderResponse && updateReminderResponse.success && ( <MessageModals showModal successTick modalBody={myVehiclesCmsContent.updateRemindersSuccessMessage} callback={closeSuccessModal} /> ); }No realice un seguimiento de la condición de discapacidad en el estado. Solo depende del valor de updateReminderResponses .
Solo prueba esa variable.
<Button ... disabled={typeof updateReminderResponses === 'undefined'}Puede usar una referencia para mantener el estado del botón presionado. No deshabilitará el botón, pero puede controlar el envío varias veces.
Asegúrese de establecer la referencia presionada en falso cuando lo necesite.
const pressed = useRef(false); const onSubmit = async () => { if(!pressed.current){ pressed.current = true // your code } };