simple_desktop.rs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #![allow(non_snake_case)]
  2. use dioxus::prelude::*;
  3. use dioxus_router::prelude::*;
  4. fn main() {
  5. simple_logger::SimpleLogger::new()
  6. .with_level(log::LevelFilter::Debug)
  7. .with_module_level("dioxus", log::LevelFilter::Trace)
  8. .init()
  9. .unwrap();
  10. launch_desktop(|| {
  11. rsx! {
  12. Router::<Route> {}
  13. }
  14. });
  15. }
  16. #[derive(Routable, Clone)]
  17. #[rustfmt::skip]
  18. enum Route {
  19. #[layout(NavBar)]
  20. #[route("/")]
  21. Home {},
  22. #[nest("/new")]
  23. #[route("/")]
  24. BlogList {},
  25. #[route("/:post")]
  26. BlogPost {
  27. post: String,
  28. },
  29. #[end_nest]
  30. #[route("/oranges")]
  31. Oranges {},
  32. }
  33. #[component]
  34. fn NavBar() -> Element {
  35. rsx! {
  36. h1 { "Your app here" }
  37. ul {
  38. li {
  39. Link { to: Route::Home {}, "home" }
  40. }
  41. li {
  42. Link { to: Route::BlogList {}, "blog" }
  43. }
  44. li {
  45. Link {
  46. to: Route::BlogPost {
  47. post: "tim".into(),
  48. },
  49. "tims' blog"
  50. }
  51. }
  52. li {
  53. Link {
  54. to: Route::BlogPost {
  55. post: "bill".into(),
  56. },
  57. "bills' blog"
  58. }
  59. }
  60. li {
  61. Link {
  62. to: Route::BlogPost {
  63. post: "james".into(),
  64. },
  65. "james amazing' blog"
  66. }
  67. }
  68. }
  69. Outlet::<Route> {}
  70. }
  71. }
  72. #[component]
  73. fn Home() -> Element {
  74. log::debug!("rendering home {:?}", current_scope_id());
  75. rsx! { h1 { "Home" } }
  76. }
  77. #[component]
  78. fn BlogList() -> Element {
  79. log::debug!("rendering blog list {:?}", current_scope_id());
  80. rsx! { div { "Blog List" } }
  81. }
  82. #[component]
  83. fn BlogPost(post: String) -> Element {
  84. log::debug!("rendering blog post {}", post);
  85. rsx! {
  86. div {
  87. h3 { "blog post: {post}" }
  88. Link { to: Route::BlogList {}, "back to blog list" }
  89. }
  90. }
  91. }
  92. #[component]
  93. fn Oranges() -> Element {
  94. rsx!("Oranges are not apples!")
  95. }