Navigation Blocking
Navigatie blokkering voegt een of meer lagen van controle toe aan de gehele onderliggende router-API. Als er blokkering handlers aanwezig zijn, zal navigatie als volgt worden voorkomen:
Als de navigatie wordt getriggerd door iets dat op routerniveau wordt geregeld, kunt u een taak uitvoeren of een UI-prompt aan de gebruiker tonen om de actie te bevestigen. Elke component die de WillLeaveObserver in de routeboom implementeert, zal worden aangeroepen. De implementator moet accept aanroepen om de navigatie voort te zetten of reject om deze te blokkeren. Als meerdere componenten de WillLeaveObserver in de routeboom implementeren, zullen de veto handlers sequentieel in omgekeerde volgorde worden uitgevoerd.
Om te zien hoe veto's in de praktijk werken, verwijzen we naar de Voorbeelden van het Gebruik van Lifecycle Observers.
Voor pagina-evenementen die niet direct kunnen worden gecontroleerd, interfereert de router niet of handhaaft hij geen specifiek gedrag. Ontwikkelaars kunnen echter nog steeds luisteren naar het beforeunload evenement om een laatste poging te doen om de gebruiker te waarschuwen voor niet-opgeslagen gegevens indien nodig.
PageEventOptions options = new PageEventOptions();
options.setCode("""
event.preventDefault();
return true;
""");
Page.getCurrent().addEventListener("beforeunload", e -> {}, options);
Terugknop van de browser
De terugknop werkt buiten de controle van webapplicaties, waardoor het moeilijk is om de actie in alle browsers consistent te onderscheppen of te voorkomen. In plaats van te proberen de terugknop te blokkeren, is het effectiever om uw UI/UX zo te ontwerpen dat de impact wordt gemitigeerd. Overweeg strategieën zoals het opslaan van niet-opgeslagen gegevens in sessieopslag, zodat als een gebruiker weg navigeert en terugkeert, hun voortgang veilig wordt hersteld. Deze benadering zorgt voor gegevensbescherming zonder te vertrouwen op onbetrouwbaar browsergedrag.