1
0

dependencies.rs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. use dioxus::prelude::*;
  2. fn main() {
  3. launch(app);
  4. }
  5. fn app() -> Element {
  6. let mut signal = use_signal(|| 0);
  7. use_future(move || async move {
  8. loop {
  9. tokio::time::sleep(std::time::Duration::from_secs(1)).await;
  10. signal += 1;
  11. }
  12. });
  13. rsx! {
  14. "Parent count: {signal}"
  15. Child {
  16. non_reactive_prop: signal()
  17. }
  18. }
  19. }
  20. #[component]
  21. fn Child(non_reactive_prop: i32) -> Element {
  22. let mut signal = use_signal(|| 0);
  23. // You can manually specify the dependencies with `use_reactive` for values that are not reactive like props
  24. let computed = use_memo(use_reactive!(
  25. |(non_reactive_prop,)| non_reactive_prop + signal()
  26. ));
  27. use_effect(use_reactive!(|(non_reactive_prop,)| println!(
  28. "{}",
  29. non_reactive_prop + signal()
  30. )));
  31. let fut = use_resource(use_reactive!(|(non_reactive_prop,)| async move {
  32. tokio::time::sleep(std::time::Duration::from_secs(1)).await;
  33. non_reactive_prop + signal()
  34. }));
  35. rsx! {
  36. button {
  37. onclick: move |_| signal += 1,
  38. "Child count: {signal}"
  39. }
  40. "Sum: {computed}"
  41. "{fut():?}"
  42. }
  43. }