readme.rs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. //! The example from the readme!
  2. //!
  3. //! This example demonstrates how to create a simple counter app with dioxus. The `Signal` type wraps inner values,
  4. //! making them `Copy`, allowing them to be freely used in closures and and async functions. `Signal` also provides
  5. //! helper methods like AddAssign, SubAssign, toggle, etc, to make it easy to update the value without running
  6. //! into lock issues.
  7. use dioxus::prelude::*;
  8. fn main() {
  9. launch(app);
  10. }
  11. fn app() -> Element {
  12. let mut vec = use_signal(|| vec![1, 2, 3]);
  13. let len = vec.len();
  14. rsx! {
  15. button {
  16. onclick: move |_| {
  17. let mut vec = vec.write();
  18. vec.push(len);
  19. },
  20. "Add"
  21. }
  22. button {
  23. onclick: move |_| {
  24. vec.pop();
  25. },
  26. "Remove"
  27. }
  28. for i in 0..len {
  29. Child {
  30. index: i,
  31. vec,
  32. }
  33. }
  34. }
  35. }
  36. #[component]
  37. fn Child(index: usize, vec: Signal<Vec<usize>>) -> Element {
  38. let item = use_memo(move || vec.read()[index]);
  39. rsx! {
  40. div { "Item: {item}" }
  41. }
  42. }