dioxus/examples/simple_router.rs

71 lines
1.3 KiB
Rust
Raw Normal View History

2023-07-26 19:19:51 -07:00
#![allow(non_snake_case)]
use dioxus::prelude::*;
use dioxus_router::prelude::*;
#[derive(Routable, Clone, PartialEq)]
enum Route {
#[layout(Nav)]
#[route("/")]
Homepage {},
#[route("/blog/:id")]
Blog { id: String },
}
#[component]
fn Homepage() -> Element {
2024-01-16 13:18:46 -06:00
rsx! { h1 { "Welcome home" } }
2023-07-26 19:19:51 -07:00
}
#[component]
fn Blog(id: String) -> Element {
2024-01-16 13:18:46 -06:00
rsx! {
2023-07-26 19:19:51 -07:00
h1 { "How to make: " }
p { "{id}" }
}
}
#[component]
fn Nav() -> Element {
2024-01-16 13:18:46 -06:00
rsx! {
2023-07-26 19:19:51 -07:00
nav {
2024-01-16 09:40:17 -06:00
li {
Link { to: Route::Homepage {}, "Go home" }
}
li {
Link {
to: Route::Blog {
id: "Brownies".to_string(),
},
"Learn Brownies"
}
}
li {
Link {
to: Route::Blog {
id: "Cookies".to_string(),
},
"Learn Cookies"
}
}
2023-07-26 19:19:51 -07:00
}
div { Outlet::<Route> {} }
}
}
fn main() {
2024-01-17 18:41:31 -08:00
launch_desktop(|| {
let cfg = || {
RouterConfig::default().initial_route(Route::Blog {
id: "hello".to_string(),
})
};
rsx! {
Router::<Route> {
config: cfg
}
}
2024-01-16 09:40:17 -06:00
});
2023-07-26 19:19:51 -07:00
}