dioxus/examples/router.rs

54 lines
1.3 KiB
Rust
Raw Normal View History

2022-01-05 22:30:12 +00:00
#![allow(non_snake_case)]
2021-11-03 04:35:56 +00:00
2022-01-05 22:30:12 +00:00
use dioxus::prelude::*;
use dioxus::router::{Link, Route, Router};
2021-11-03 04:35:56 +00:00
2022-01-05 22:30:12 +00:00
fn main() {
dioxus::desktop::launch(app);
2021-11-03 04:35:56 +00:00
}
fn app(cx: Scope) -> Element {
2021-11-03 04:35:56 +00:00
cx.render(rsx! {
2022-01-05 22:30:12 +00:00
Router {
ul {
Link { to: "/", li { "Go home!" } }
Link { to: "users", li { "List all users" } }
Link { to: "blog", li { "Blog posts" } }
}
Route { to: "/", "Home" }
Route { to: "users",
Route { to: "/", "User list" }
Route { to: ":name", BlogPost {} }
}
Route { to: "blog"
Route { to: "/", "Blog list" }
Route { to: ":post", BlogPost {} }
}
Route { to: "", "Err 404 Route Not Found" }
}
2021-11-03 04:35:56 +00:00
})
}
2021-11-03 04:35:56 +00:00
2022-01-05 22:30:12 +00:00
fn BlogPost(cx: Scope) -> Element {
let post = dioxus::router::use_route(&cx).last_segment()?;
cx.render(rsx! {
div {
h1 { "Reading blog post: {post}" }
p { "example blog post" }
2021-11-03 04:35:56 +00:00
}
2022-01-05 22:30:12 +00:00
})
2021-11-03 04:35:56 +00:00
}
2022-01-05 22:30:12 +00:00
fn User(cx: Scope) -> Element {
let post = dioxus::router::use_route(&cx).last_segment()?;
let bold = dioxus::router::use_route(&cx).param::<bool>("bold");
cx.render(rsx! {
div {
h1 { "Reading blog post: {post}" }
p { "example blog post" }
}
})
}