1
0

lib.rs 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. #![allow(non_snake_case)]
  2. use dioxus::prelude::*;
  3. pub fn app() -> Element {
  4. let mut count = use_signal(|| 0);
  5. let mut 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 |_| async move {
  12. if let Ok(data) = get_server_data().await {
  13. println!("Client received: {}", data);
  14. text.set(data.clone());
  15. post_server_data(data).await.unwrap();
  16. }
  17. },
  18. "Run a server function"
  19. }
  20. "Server said: {text}"
  21. }
  22. }
  23. #[server(PostServerData)]
  24. async fn post_server_data(data: String) -> Result<(), ServerFnError> {
  25. println!("Server received: {}", data);
  26. Ok(())
  27. }
  28. #[server(GetServerData)]
  29. async fn get_server_data() -> Result<String, ServerFnError> {
  30. Ok("Hello from the server!".to_string())
  31. }