58 lines
973 B
Rust
58 lines
973 B
Rust
use dioxus::prelude::*;
|
|
|
|
fn main() {
|
|
launch(|| {
|
|
rsx! {
|
|
Router::<Route> {}
|
|
}
|
|
})
|
|
}
|
|
|
|
#[derive(Routable, Clone, PartialEq)]
|
|
#[rustfmt::skip]
|
|
enum Route {
|
|
#[redirect("/",|| Route::Other)]
|
|
#[route("/other")]
|
|
Other,
|
|
#[route("/other/:id")]
|
|
OtherId { id: String },
|
|
#[route("/:..segments")]
|
|
NotFound { segments: Vec<String> },
|
|
}
|
|
|
|
#[component]
|
|
fn Other() -> Element {
|
|
rsx! {
|
|
div {
|
|
id: "other",
|
|
"Other"
|
|
}
|
|
|
|
Link {
|
|
id: "other-id-link",
|
|
to: Route::OtherId { id: "123".to_string() },
|
|
"go to OtherId"
|
|
}
|
|
}
|
|
}
|
|
|
|
#[component]
|
|
fn OtherId(id: String) -> Element {
|
|
rsx! {
|
|
div {
|
|
id: "other-id",
|
|
"OtherId {id}"
|
|
}
|
|
}
|
|
}
|
|
|
|
#[component]
|
|
fn NotFound(segments: Vec<String>) -> Element {
|
|
rsx! {
|
|
div {
|
|
id: "not-found",
|
|
"NotFound {segments:?}"
|
|
}
|
|
}
|
|
}
|