2022-01-05 17:30:12 -05:00
|
|
|
#![allow(non_snake_case)]
|
2021-11-03 00:35:56 -04:00
|
|
|
|
2022-01-05 17:30:12 -05:00
|
|
|
use dioxus::prelude::*;
|
|
|
|
use dioxus::router::{Link, Route, Router};
|
2022-01-11 11:27:02 -06:00
|
|
|
use serde::Deserialize;
|
2021-11-03 00:35:56 -04:00
|
|
|
|
2022-01-05 17:30:12 -05:00
|
|
|
fn main() {
|
|
|
|
dioxus::desktop::launch(app);
|
2021-11-03 00:35:56 -04:00
|
|
|
}
|
|
|
|
|
2022-01-02 18:35:38 -05:00
|
|
|
fn app(cx: Scope) -> Element {
|
2021-11-03 00:35:56 -04:00
|
|
|
cx.render(rsx! {
|
2022-01-05 17:30:12 -05:00
|
|
|
Router {
|
|
|
|
ul {
|
|
|
|
Link { to: "/", li { "Go home!" } }
|
2022-03-05 15:25:09 -05:00
|
|
|
Link { to: "/users", li { "List all users" } }
|
|
|
|
Link { to: "/blog", li { "Blog posts" } }
|
|
|
|
|
|
|
|
Link { to: "/users/bill", li { "List all users" } }
|
|
|
|
Link { to: "/blog/5", li { "Blog post 5" } }
|
2022-01-05 17:30:12 -05:00
|
|
|
}
|
|
|
|
Route { to: "/", "Home" }
|
2022-03-05 15:25:09 -05:00
|
|
|
Route { to: "/users", "User list" }
|
|
|
|
Route { to: "/users/:name", User {} }
|
|
|
|
Route { to: "/blog", "Blog list" }
|
|
|
|
Route { to: "/blog/:post", BlogPost {} }
|
2022-01-05 17:30:12 -05:00
|
|
|
Route { to: "", "Err 404 Route Not Found" }
|
2022-01-02 02:15:04 -05:00
|
|
|
}
|
2021-11-03 00:35:56 -04:00
|
|
|
})
|
2022-01-02 18:35:38 -05:00
|
|
|
}
|
2021-11-03 00:35:56 -04:00
|
|
|
|
2022-01-05 17:30:12 -05:00
|
|
|
fn BlogPost(cx: Scope) -> Element {
|
2022-03-02 23:03:10 -05:00
|
|
|
let post = dioxus::router::use_route(&cx).last_segment()?;
|
2022-01-05 17:30:12 -05:00
|
|
|
|
|
|
|
cx.render(rsx! {
|
|
|
|
div {
|
|
|
|
h1 { "Reading blog post: {post}" }
|
|
|
|
p { "example blog post" }
|
2021-11-03 00:35:56 -04:00
|
|
|
}
|
2022-01-05 17:30:12 -05:00
|
|
|
})
|
2021-11-03 00:35:56 -04:00
|
|
|
}
|
|
|
|
|
2022-01-11 11:27:02 -06:00
|
|
|
#[derive(Deserialize)]
|
|
|
|
struct Query {
|
|
|
|
bold: bool,
|
|
|
|
}
|
|
|
|
|
2022-01-05 17:30:12 -05:00
|
|
|
fn User(cx: Scope) -> Element {
|
2022-03-02 23:03:10 -05:00
|
|
|
let post = dioxus::router::use_route(&cx).last_segment()?;
|
|
|
|
|
2022-01-24 19:52:12 -05:00
|
|
|
let query = dioxus::router::use_route(&cx)
|
|
|
|
.query::<Query>()
|
|
|
|
.unwrap_or(Query { bold: false });
|
2022-01-05 17:30:12 -05:00
|
|
|
|
|
|
|
cx.render(rsx! {
|
|
|
|
div {
|
|
|
|
h1 { "Reading blog post: {post}" }
|
|
|
|
p { "example blog post" }
|
2022-01-24 19:54:27 -05:00
|
|
|
|
2022-01-24 19:52:12 -05:00
|
|
|
if query.bold {
|
|
|
|
rsx!{ b { "bold" } }
|
|
|
|
} else {
|
|
|
|
rsx!{ i { "italic" } }
|
|
|
|
}
|
2022-01-05 17:30:12 -05:00
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|