signals.rs 709 B

123456789101112131415161718192021222324252627282930
  1. //! Example: README.md showcase
  2. //!
  3. //! The example from the README.md.
  4. use dioxus::prelude::*;
  5. use dioxus_signals::{use_init_signal_rt, use_signal};
  6. use std::time::Duration;
  7. fn main() {
  8. dioxus_desktop::launch(app);
  9. }
  10. fn app(cx: Scope) -> Element {
  11. use_init_signal_rt(cx);
  12. let mut count = use_signal(cx, || 0);
  13. use_coroutine(cx, |_: UnboundedReceiver<()>| async move {
  14. loop {
  15. count += 1;
  16. tokio::time::sleep(Duration::from_millis(100)).await;
  17. }
  18. });
  19. cx.render(rsx! {
  20. h1 { "High-Five counter: {count}" }
  21. button { onclick: move |_| count += 1, "Up high!" }
  22. button { onclick: move |_| count -= 1, "Down low!" }
  23. })
  24. }