freya_router/components/router.rs
1use freya_core::prelude::*;
2
3use crate::{
4 components::outlet,
5 routable::Routable,
6 router_cfg::RouterConfig,
7};
8
9/// A component that renders the current route.
10pub fn router<R: Routable + Clone>(init: impl FnOnce() -> RouterConfig<R>) -> impl IntoElement {
11 use crate::prelude::{
12 RouterContext,
13 outlet::OutletContext,
14 };
15
16 use_hook(|| {
17 provide_context(RouterContext::new::<R>(init()));
18 provide_context(OutletContext::<R>::new());
19 });
20
21 outlet::<R>()
22}