Nested Routes
Geneste routes stellen het mogelijk om kindroutes binnen ouderroutes weer te geven, wat resulteert in een modulaire en herbruikbare gebruikersinterface. Ouderroutes definiëren gedeelde componenten, terwijl kindroutes worden ingevoegd in specifieke uitgangen binnen deze oudercomponenten.
Geneste routes definiëren
Geneste routes worden gemaakt met behulp van de outlet parameter in de @Route annotatie, die een ouder-kind relatie tot stand brengt. De outlet bepaalt waar de kindcomponent binnen de ouderroute zal worden weergegeven.
@Route
public class MainLayout extends Composite<AppLayout> {
public MainLayout() {
setHeader();
setDrawer();
}
}
@Route(outlet = MainLayout.class)
public class DashboardView extends Composite<Div> {
public DashboardView() {
getBoundComponent().add(new H1("Dashboard Inhoud"));
}
}
@Route(outlet = DashboardView.class)
public class SettingsView extends Composite<Div> {
public SettingsView() {
getBoundComponent().add(new H1("Instellingen Inhoud"));
}
}
In dit voorbeeld:
MainLayoutis een Layout Route.DashboardViewis een View Route genest binnenMainLayout.SettingsViewis een View Route genest binnenDashboardView.
Bij het navigeren naar /dashboard/settings:
- Wordt
MainLayoutweergegeven. - Wordt
DashboardViewingevoegd in de outlet vanMainLayout. - Wordt uiteindelijk
SettingsViewingevoegd in de outlet vanDashboardView.
Deze hiërarchische structuur wordt weerspiegeld in de URL, waar elk segment een niveau in de componenthiërarchie vertegenwoordigt:
- URL:
/dashboard/settings - Hiërarchie:
MainLayout: Layout RouteDashboardView: View RouteSettingsView: View Route
Deze structuur zorgt voor consistente gedeelde gebruikersinterfacecomponenten (zoals kopteksten of navigatiemenu's) terwijl de inhoud binnen die lay-outs dynamisch kan veranderen.