async.rs 744 B

1234567891011121314151617181920212223242526272829303132333435
  1. /* use dioxus::prelude::*;
  2. use dioxus_core as dioxus;
  3. use dioxus_core_macro::*;
  4. use dioxus_hooks::*;
  5. use dioxus_html as dioxus_elements;
  6. use std::time::Duration;
  7. fn main() {
  8. dioxus_desktop::launch(app);
  9. }
  10. fn app(cx: Scope) -> Element {
  11. let count = use_state(&cx, || 0);
  12. use_future(&cx, || {
  13. let count = count.for_async();
  14. async move {
  15. loop {
  16. tokio::time::sleep(Duration::from_millis(1000)).await;
  17. *count.modify() += 1;
  18. }
  19. }
  20. });
  21. cx.render(rsx! {
  22. div {
  23. h1 { "High-Five counter: {count}" }
  24. button {
  25. onclick: move |_| count.set(0),
  26. "Click me!"
  27. }
  28. }
  29. })
  30. }
  31. */