lib.rs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. #![allow(non_snake_case)]
  2. use dioxus::prelude::*;
  3. pub fn app() -> Element {
  4. let mut count = use_signal(|| 0);
  5. let text = use_signal(|| "...".to_string());
  6. rsx! {
  7. h1 { "High-Five counter: {count}" }
  8. button { onclick: move |_| count += 1, "Up high!" }
  9. button { onclick: move |_| count -= 1, "Down low!" }
  10. button {
  11. onclick: move |_| {
  12. to_owned![text];
  13. async move {
  14. if let Ok(data) = get_server_data().await {
  15. println!("Client received: {}", data);
  16. text.set(data.clone());
  17. post_server_data(data).await.unwrap();
  18. }
  19. }
  20. },
  21. "Run a server function"
  22. }
  23. "Server said: {text}"
  24. }
  25. }
  26. #[server(PostServerData)]
  27. async fn post_server_data(data: String) -> Result<(), ServerFnError> {
  28. println!("Server received: {}", data);
  29. Ok(())
  30. }
  31. #[server(GetServerData)]
  32. async fn get_server_data() -> Result<String, ServerFnError> {
  33. Ok("Hello from the server!".to_string())
  34. }