link.rs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. use dioxus::prelude::*;
  2. use dioxus::router::prelude::*;
  3. fn main() {
  4. launch_desktop(App);
  5. }
  6. #[component]
  7. fn App() -> Element {
  8. rsx! (
  9. div {
  10. p { a { href: "http://dioxuslabs.com/", "Default link - links outside of your app" } }
  11. p {
  12. a {
  13. href: "http://dioxuslabs.com/",
  14. prevent_default: "onclick",
  15. onclick: |_| println!("Hello Dioxus"),
  16. "Custom event link - links inside of your app"
  17. }
  18. }
  19. }
  20. div { Router::<Route> {} }
  21. )
  22. }
  23. #[derive(Routable, Clone)]
  24. #[rustfmt::skip]
  25. enum Route {
  26. #[layout(Header)]
  27. #[route("/")]
  28. Home {},
  29. #[route("/settings")]
  30. Settings {},
  31. }
  32. #[component]
  33. fn Header() -> Element {
  34. rsx! {
  35. h1 { "Your app here" }
  36. ul {
  37. li {
  38. Link { to: Route::Home {}, "home" }
  39. }
  40. li {
  41. Link { to: Route::Settings {}, "settings" }
  42. }
  43. }
  44. Outlet::<Route> {}
  45. }
  46. }
  47. #[component]
  48. fn Home() -> Element {
  49. rsx!( h1 { "Home" } )
  50. }
  51. #[component]
  52. fn Settings() -> Element {
  53. rsx!( h1 { "Settings" } )
  54. }