simple_router.rs 883 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #![allow(non_snake_case)]
  2. use dioxus::prelude::*;
  3. use dioxus_router::prelude::*;
  4. #[derive(Routable, Clone, PartialEq)]
  5. enum Route {
  6. #[layout(Nav)]
  7. #[route("/")]
  8. Homepage {},
  9. #[route("/blog/:id")]
  10. Blog { id: String },
  11. }
  12. #[component]
  13. fn Homepage() -> Element {
  14. render! { h1 { "Welcome home" } }
  15. }
  16. #[component]
  17. fn Blog(id: String) -> Element {
  18. render! {
  19. h1 { "How to make: " }
  20. p { "{id}" }
  21. }
  22. }
  23. #[component]
  24. fn Nav() -> Element {
  25. render! {
  26. nav {
  27. li { Link { to: Route::Homepage { }, "Go home" } }
  28. li { Link { to: Route::Blog { id: "Brownies".to_string() }, "Learn Brownies" } }
  29. li { Link { to: Route::Blog { id: "Cookies".to_string() }, "Learn Cookies" } }
  30. }
  31. div { Outlet::<Route> {} }
  32. }
  33. }
  34. fn main() {
  35. dioxus_desktop::launch(|| render!(Router::<Route> {}));
  36. }