simple_desktop.rs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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_router", log::LevelFilter::Trace)
  8. .with_module_level("dioxus", log::LevelFilter::Trace)
  9. .init()
  10. .unwrap();
  11. dioxus_desktop::launch(app);
  12. }
  13. fn app(cx: Scope) -> Element {
  14. use_router(cx, &RouterConfiguration::default, &|| {
  15. Segment::content(comp(Home))
  16. .fixed(
  17. "blog",
  18. Route::empty().nested(
  19. Segment::content(comp(BlogList)).catch_all((comp(BlogPost), PostId {})),
  20. ),
  21. )
  22. .fixed("oranges", comp(Oranges))
  23. .fixed("apples", "/oranges")
  24. });
  25. render! {
  26. h1 { "Your app here" }
  27. ul {
  28. li { Link { target: "/", "home" } }
  29. li { Link { target: "/blog", "blog" } }
  30. li { Link { target: "/blog/tim", "tims' blog" } }
  31. li { Link { target: "/blog/bill", "bills' blog" } }
  32. li { Link { target: "/blog/james", "james amazing' blog" } }
  33. li { Link { target: "/apples", "go to apples" } }
  34. }
  35. Outlet { }
  36. }
  37. }
  38. fn Home(cx: Scope) -> Element {
  39. log::debug!("rendering home {:?}", cx.scope_id());
  40. render! { h1 { "Home" } }
  41. }
  42. fn BlogList(cx: Scope) -> Element {
  43. log::debug!("rendering blog list {:?}", cx.scope_id());
  44. render! { div { "Blog List" } }
  45. }
  46. struct PostId;
  47. fn BlogPost(cx: Scope) -> Element {
  48. let Some(id) = use_route(cx)?.parameter::<PostId>() else {
  49. return render!(div { "No blog post id" });
  50. };
  51. log::debug!("rendering blog post {}", id);
  52. render! {
  53. div {
  54. h3 { "blog post: {id:?}" }
  55. Link { target: "/blog/", "back to blog list" }
  56. }
  57. }
  58. }
  59. fn Oranges(cx: Scope) -> Element {
  60. render!("Oranges are not apples!")
  61. }