1
0

renders.rs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. use dioxus::prelude::*;
  2. use dioxus_ssr::{render_lazy, render_vdom, render_vdom_cfg, SsrConfig, SsrRenderer, TextRenderer};
  3. static SIMPLE_APP: Component = |cx| {
  4. cx.render(rsx!(div {
  5. "hello world!"
  6. }))
  7. };
  8. static SLIGHTLY_MORE_COMPLEX: Component = |cx| {
  9. cx.render(rsx! {
  10. div { title: "About W3Schools",
  11. (0..20).map(|f| rsx!{
  12. div {
  13. title: "About W3Schools",
  14. style: "color:blue;text-align:center",
  15. class: "About W3Schools",
  16. p {
  17. title: "About W3Schools",
  18. "Hello world!: {f}"
  19. }
  20. }
  21. })
  22. }
  23. })
  24. };
  25. static NESTED_APP: Component = |cx| {
  26. cx.render(rsx!(
  27. div {
  28. SIMPLE_APP {}
  29. }
  30. ))
  31. };
  32. static FRAGMENT_APP: Component = |cx| {
  33. cx.render(rsx!(
  34. div { "f1" }
  35. div { "f2" }
  36. div { "f3" }
  37. div { "f4" }
  38. ))
  39. };
  40. #[test]
  41. fn to_string_works() {
  42. let mut dom = VirtualDom::new(SIMPLE_APP);
  43. dom.rebuild();
  44. dbg!(render_vdom(&dom));
  45. }
  46. #[test]
  47. fn hydration() {
  48. let mut dom = VirtualDom::new(NESTED_APP);
  49. dom.rebuild();
  50. dbg!(render_vdom_cfg(&dom, |c| c.pre_render(true)));
  51. }
  52. #[test]
  53. fn nested() {
  54. let mut dom = VirtualDom::new(NESTED_APP);
  55. dom.rebuild();
  56. dbg!(render_vdom(&dom));
  57. }
  58. #[test]
  59. fn fragment_app() {
  60. let mut dom = VirtualDom::new(FRAGMENT_APP);
  61. dom.rebuild();
  62. dbg!(render_vdom(&dom));
  63. }
  64. #[test]
  65. fn write_to_file() {
  66. use std::fs::File;
  67. use std::io::Write;
  68. let mut file = File::create("index.html").unwrap();
  69. let mut dom = VirtualDom::new(SLIGHTLY_MORE_COMPLEX);
  70. dom.rebuild();
  71. file.write_fmt(format_args!(
  72. "{}",
  73. TextRenderer::from_vdom(&dom, SsrConfig::default())
  74. ))
  75. .unwrap();
  76. }
  77. #[test]
  78. fn styles() {
  79. static STLYE_APP: Component = |cx| {
  80. cx.render(rsx! {
  81. div { color: "blue", font_size: "46px" }
  82. })
  83. };
  84. let mut dom = VirtualDom::new(STLYE_APP);
  85. dom.rebuild();
  86. dbg!(render_vdom(&dom));
  87. }
  88. #[test]
  89. fn lazy() {
  90. let p1 = SsrRenderer::new(|c| c).render_lazy(rsx! {
  91. div { "ello" }
  92. });
  93. let p2 = render_lazy(rsx! {
  94. div {
  95. "ello"
  96. }
  97. });
  98. assert_eq!(p1, p2);
  99. }
  100. #[test]
  101. fn big_lazy() {
  102. let s = render_lazy(rsx! {
  103. div {
  104. div {
  105. div {
  106. h1 { "ello world" }
  107. h1 { "ello world" }
  108. h1 { "ello world" }
  109. h1 { "ello world" }
  110. h1 { "ello world" }
  111. }
  112. }
  113. }
  114. });
  115. dbg!(s);
  116. }
  117. #[test]
  118. fn inner_html() {
  119. let s = render_lazy(rsx! {
  120. div {
  121. dangerous_inner_html: "<div> ack </div>"
  122. }
  123. });
  124. dbg!(s);
  125. }