kitchen_sink.rs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. use dioxus::core::{ElementId, Mutation};
  2. use dioxus::prelude::*;
  3. fn basic_syntax_is_a_template(cx: Scope) -> Element {
  4. let asd = 123;
  5. let var = 123;
  6. cx.render(rsx! {
  7. div { key: "12345",
  8. class: "asd",
  9. class: "{asd}",
  10. onclick: move |_| {},
  11. div { "{var}" }
  12. div {
  13. h1 { "var" }
  14. p { "you're great!" }
  15. div { background_color: "red",
  16. h1 { "var" }
  17. div { b { "asd" } "not great" }
  18. }
  19. p { "you're great!" }
  20. }
  21. }
  22. })
  23. }
  24. #[test]
  25. fn dual_stream() {
  26. let mut dom = VirtualDom::new(basic_syntax_is_a_template);
  27. let edits = dom.rebuild().santize();
  28. use Mutation::*;
  29. assert_eq!(
  30. edits.edits,
  31. [
  32. LoadTemplate { name: "template", index: 0, id: ElementId(1) },
  33. SetAttribute { name: "class", value: "123", id: ElementId(1), ns: None },
  34. NewEventListener { name: "click", id: ElementId(1) },
  35. HydrateText { path: &[0, 0], value: "123", id: ElementId(2) },
  36. AppendChildren { id: ElementId(0), m: 1 }
  37. ],
  38. );
  39. }