async.rs 826 B

12345678910111213141516171819202122232425262728293031323334353637
  1. //! Example: README.md showcase
  2. //!
  3. //! The example from the README.md.
  4. use std::time::Duration;
  5. use dioxus::prelude::*;
  6. use dioxus_core as dioxus;
  7. use dioxus_core_macro::*;
  8. use dioxus_hooks::*;
  9. use dioxus_html as dioxus_elements;
  10. fn main() {
  11. // simple_logger::init().unwrap();
  12. dioxus_desktop::launch(app);
  13. }
  14. fn app(cx: Scope<()>) -> Element {
  15. let mut count = use_state(&cx, || 0);
  16. log::debug!("count is {:?}", count);
  17. cx.push_future(|| async move {
  18. tokio::time::sleep(Duration::from_millis(1000)).await;
  19. println!("count is now {:?}", count);
  20. count += 1;
  21. });
  22. cx.render(rsx! {
  23. div {
  24. h1 { "High-Five counter: {count}" }
  25. button {
  26. onclick: move |_| count.set(0),
  27. "Click me!"
  28. }
  29. }
  30. })
  31. }