Navigation Events
Además de los eventos del ciclo de vida específicos de los componentes, puedes registrar escuchas de eventos globales a nivel del enrutador. Esto permite el seguimiento de la navegación a nivel global a través de toda la aplicación, lo que resulta útil para el registro, la analítica u otras preocupaciones transversales.
Ejemplo: Escucha de navegación global
Router.getCurrent().addNavigateListener(event -> {
Location location = event.getLocation();
console().log("Navegado a: " + location.getFullURI());
});
En este ejemplo, se registra un escuchador global para registrar cada evento de navegación en la aplicación. Esto es útil para auditorías o para rastrear vistas de página.
Registro de escuchas de eventos del ciclo de vida globales
Los escuchadores globales se pueden adjuntar a varios eventos del ciclo de vida, incluyendo:
WillEnterEvent
: Se dispara antes de que se adjunte el componente de cualquier ruta al DOM.DidEnterEvent
: Se dispara después de que un componente se adjunta al DOM.WillLeaveEvent
: Se dispara antes de que un componente se desadjunte del DOM.DidLeaveEvent
: Se dispara después de que un componente se desadjunta del DOM.NavigateEvent
: Se dispara cada vez que ocurre una navegación.ActivateEvent
(desde 25.03): Se dispara cuando se reactiva un componente en caché.
También puedes engancharte a los eventos del ciclo de vida utilizando observadores. Para más detalles, consulta los Observadores del Ciclo de Vida.
Ejemplo: Escucha global de WillLeaveEvent
Router.getCurrent().addWillLeaveListener(event -> {
ConfirmDialog.Result result = showConfirmDialog(
"¿Estás seguro de que deseas salir de esta vista?",
"Salir de la Vista",
ConfirmDialog.OptionType.OK_CANCEL,
ConfirmDialog.MessageType.WARNING);
event.veto(result == ConfirmDialog.Result.CANCEL);
});
En este caso, el WillLeaveEvent
se utiliza globalmente para mostrar un cuadro de diálogo de confirmación antes de que el usuario navegue fuera de cualquier vista.