Estoy tratando de cerrar un modal con el botón de retroceso nativo de Android en mi proyecto. El siguiente código cierra el modal pero navega de regreso a la raíz del proyecto.
document.addEventListener('backbutton', (event) => { if(modalIsOpen === true) { setIsOpen(false); event.preventDefault(); } else if(modalIsOpen === false && history.location.pathname === "/tabs/home"){ App.exitApp(); } });Mi otra solución fue usar el complemento de la aplicación capacitor
const ionRouter = useIonRouter(); document.addEventListener('ionBackButton', (ev) => { ev.detail.register(-1, () => { if (modalIsOpen === true) { setIsOpen(false); event.preventDefault(); } else if (modalIsOpen === false && !ionRouter.canGoBack()) { App.exitApp(); } }); }); ¡Ninguno de los dos funciona de la manera en que deseaba que funcionaran y realmente me encantaría resolver esto! También intenté usar history.push(); para empujar a la página en la que el modal estaba cerca para detener la navegación de regreso a la raíz que funcionó pero no para todas las páginas.
Cualquier ayuda sería muy apreciada.
Podría haber otros detectores de eventos para el evento del botón de retroceso. Puede intentar usar la captura de eventos:
addEventListener('backbutton', () => { … }, { capture: true }); También recomendaría mover event.preventDefault() al comienzo de su devolución de llamada.