1
0

map_signal.rs 911 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #![allow(non_snake_case)]
  2. use dioxus::prelude::*;
  3. fn main() {
  4. launch(app);
  5. }
  6. fn app() -> Element {
  7. let mut vec = use_signal(|| vec![0]);
  8. rsx! {
  9. button {
  10. onclick: move |_| {
  11. let mut write = vec.write();
  12. let len = write.len() as i32;
  13. write.push(len);
  14. },
  15. "Create"
  16. }
  17. button {
  18. onclick: move |_| {
  19. vec.write().pop();
  20. },
  21. "Destroy"
  22. }
  23. for i in 0..vec.len() {
  24. Child { count: vec.map(move |v| &v[i]) }
  25. }
  26. }
  27. }
  28. #[component]
  29. fn Child(count: MappedSignal<i32>) -> Element {
  30. use_memo({
  31. to_owned![count];
  32. move || {
  33. let value = count.read();
  34. println!("Child value: {value}");
  35. }
  36. });
  37. rsx! {
  38. div {
  39. "Child: {count}"
  40. }
  41. }
  42. }