hydrate.rs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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(cx: Scope) -> Element {
  9. cx.render(rsx! {
  10. div {
  11. div {
  12. h1 {}
  13. }
  14. div {
  15. h2 {}
  16. }
  17. }
  18. })
  19. }
  20. let mut dom = VirtualDom::new(app);
  21. let muts = dom.rebuild();
  22. dbg!(muts.edits);
  23. }
  24. #[wasm_bindgen_test]
  25. fn rehydrates() {
  26. fn app(cx: Scope) -> Element {
  27. cx.render(rsx! {
  28. div {
  29. div {
  30. h1 { "h1" }
  31. }
  32. div {
  33. h2 { "h2" }
  34. }
  35. button {
  36. onclick: move |_| {
  37. println!("clicked");
  38. },
  39. "listener test"
  40. }
  41. false.then(|| rsx!{ "hello" })
  42. }
  43. })
  44. }
  45. let mut dom = VirtualDom::new(app);
  46. let _ = dom.rebuild();
  47. let out = dioxus_ssr::render(&dom);
  48. window()
  49. .unwrap()
  50. .document()
  51. .unwrap()
  52. .body()
  53. .unwrap()
  54. .set_inner_html(&format!("<div id='main'>{out}</div>"));
  55. dioxus_web::launch_cfg(app, Config::new().hydrate(true));
  56. }