1
0

miri_full_app.rs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. use crate::dioxus_elements::SerializedMouseData;
  2. use dioxus::prelude::*;
  3. use dioxus_core::ElementId;
  4. use dioxus_elements::SerializedHtmlEventConverter;
  5. use std::rc::Rc;
  6. #[test]
  7. fn miri_rollover() {
  8. set_event_converter(Box::new(SerializedHtmlEventConverter));
  9. let mut dom = VirtualDom::new(app);
  10. dom.rebuild(&mut dioxus_core::NoOpMutations);
  11. for _ in 0..3 {
  12. dom.handle_event(
  13. "click",
  14. Rc::new(PlatformEventData::new(Box::<SerializedMouseData>::default())),
  15. ElementId(2),
  16. true,
  17. );
  18. dom.process_events();
  19. _ = dom.render_immediate_to_vec();
  20. }
  21. }
  22. fn app() -> Element {
  23. let mut idx = use_signal(|| 0);
  24. let onhover = |_| println!("go!");
  25. rsx! {
  26. div {
  27. button {
  28. onclick: move |_| {
  29. idx += 1;
  30. println!("Clicked");
  31. },
  32. "+"
  33. }
  34. button { onclick: move |_| idx -= 1, "-" }
  35. ul {
  36. {(0..idx()).map(|i| rsx! {
  37. ChildExample { i: i, onhover: onhover }
  38. })}
  39. }
  40. }
  41. }
  42. }
  43. #[component]
  44. fn ChildExample(i: i32, onhover: EventHandler<MouseEvent>) -> Element {
  45. rsx! { li { onmouseover: move |e| onhover.call(e), "{i}" } }
  46. }