Created
October 25, 2023 18:17
-
-
Save ealmloff/04d4446f4294769fe73f6625aa34b690 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#![allow(non_snake_case)] | |
use dioxus_signals::use_signal; | |
use dioxus::prelude::*; | |
use dioxus_fullstack::prelude::*; | |
fn main() { | |
LaunchBuilder::new(App).launch(); | |
} | |
fn App(cx: Scope) -> Element { | |
let mut count = use_signal(cx, || 0); | |
cx.render(rsx! { | |
h1 { "High-Five counter: {count}" } | |
button { onclick: move |_| count += 1, "Up high!" } | |
button { onclick: move |_| count -= 1, "Down low!" } | |
button { | |
onclick: move |_| { | |
async move { | |
// Call the server function just like a local async function | |
if let Ok(new_count) = double_server(count.value()).await { | |
count.set(new_count); | |
} | |
} | |
}, | |
"Double" | |
} | |
}) | |
} | |
#[server] | |
async fn double_server(number: i32) -> Result<i32, ServerFnError> { | |
// Perform some expensive computation or access a database on the server | |
// tokio::time::sleep(std::time::Duration::from_secs(1)).await; | |
let result = number * 2; | |
println!("server calculated {result}"); | |
Ok(result) | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment