1
0

signals.rs 686 B

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