miri_full_app.rs 1.3 KB

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