hydrate.rs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. use dioxus::prelude::*;
  2. use dioxus_web::Config;
  3. use wasm_bindgen_test::wasm_bindgen_test;
  4. use web_sys::window;
  5. wasm_bindgen_test::wasm_bindgen_test_configure!(run_in_browser);
  6. #[test]
  7. fn makes_tree() {
  8. fn app() -> Element {
  9. rsx! {
  10. div {
  11. div { h1 {} }
  12. div { h2 {} }
  13. }
  14. }
  15. }
  16. let mut dom = VirtualDom::new(app);
  17. let muts = dom.rebuild_to_vec();
  18. dbg!(muts.edits);
  19. }
  20. #[wasm_bindgen_test]
  21. fn rehydrates() {
  22. fn app() -> Element {
  23. rsx! {
  24. div {
  25. div { h1 { "h1" } }
  26. div { h2 { "h2" } }
  27. button {
  28. onclick: move |_| {
  29. println!("clicked");
  30. },
  31. "listener test"
  32. }
  33. {false.then(|| rsx!{ "hello" })}
  34. }
  35. }
  36. }
  37. let mut dom = VirtualDom::new(app);
  38. dom.rebuild(&mut dioxus_core::NoOpMutations);
  39. let out = dioxus_ssr::render(&dom);
  40. window()
  41. .unwrap()
  42. .document()
  43. .unwrap()
  44. .body()
  45. .unwrap()
  46. .set_inner_html(&format!("<div id='main'>{out}</div>"));
  47. dioxus_web::launch::launch_cfg(app, Config::new().hydrate(true));
  48. }