rsx_compile_fail.rs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. //! This example just flexes the ability to use arbitrary expressions within RSX.
  2. //! It also proves that lifetimes work properly, especially when used with use_ref
  3. use dioxus::prelude::*;
  4. fn main() {
  5. let mut vdom = VirtualDom::new(example);
  6. _ = vdom.rebuild();
  7. let mut renderer = dioxus_ssr::Renderer::new();
  8. renderer.pretty = true;
  9. renderer.render(&vdom);
  10. }
  11. fn example() -> Element {
  12. let items = use_signal(|| {
  13. vec![Thing {
  14. a: "asd".to_string(),
  15. b: 10,
  16. }]
  17. });
  18. let things = use_signal(|| {
  19. vec![Thing {
  20. a: "asd".to_string(),
  21. b: 10,
  22. }]
  23. });
  24. let things_list = things.read();
  25. let mything = use_signal(|| Some(String::from("asd")));
  26. let mything_read = mything.read();
  27. rsx!(
  28. div {
  29. div { id: "asd",
  30. "your neighborhood spiderman"
  31. for item in items.iter().cycle().take(5) {
  32. div { "{item.a}" }
  33. }
  34. for thing in things_list.iter() {
  35. div { "{thing.a}" "{thing.b}" }
  36. }
  37. if let Some(f) = mything_read.as_ref() {
  38. div { "{f}" }
  39. }
  40. }
  41. }
  42. ))
  43. }
  44. struct Thing {
  45. a: String,
  46. b: u32,
  47. }