simple_router.rs 1.1 KB

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