simple.rs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. use std::future::Future;
  2. use dioxus_core::{component::AnyContext, prelude::*};
  3. // use virtual_dom_rs::Closure;
  4. // Stop-gap while developing
  5. // Need to update the macro
  6. type VirtualNode = VNode;
  7. pub fn main() {
  8. let dom = VirtualDom::new(root);
  9. let mut renderer = TextRenderer::new(dom);
  10. let output = renderer.render();
  11. }
  12. fn root(ctx: &mut AnyContext) -> VNode {
  13. // the regular html syntax
  14. // html! {
  15. // <html>
  16. // <Head />
  17. // <Body />
  18. // <Footer />
  19. // </html>
  20. // }
  21. // or a manually crated vnode
  22. {
  23. let mut node_0 = VNode::element("div");
  24. {
  25. if let Some(ref mut element_node) = node_0.as_velement_mut() {
  26. // element_node.attrs.insert("blah", "blah");
  27. // element_node.children.extend(node_0.into_iter());
  28. }
  29. }
  30. let mut node_1: IterableNodes = ("Hello world!").into();
  31. node_1.first().insert_space_before_text();
  32. let mut node_2 = VNode::element("button");
  33. let node_3 = VNode::Component(VComponent {});
  34. {
  35. // let closure = Closure::wrap(Box::new(|_| {}) as Box<FnMut(_)>);
  36. // let closure_rc = std::rc::Rc::new(closure);
  37. // node_2
  38. // .as_velement_mut()
  39. // .expect("Not an element")
  40. // .events
  41. // .0
  42. // .insert("onclick".to_string(), closure_rc);
  43. }
  44. if let Some(ref mut element_node) = node_0.as_velement_mut() {
  45. element_node.children.extend(node_1.into_iter());
  46. }
  47. if let Some(ref mut element_node) = node_0.as_velement_mut() {
  48. element_node.children.extend(node_2.into_iter());
  49. }
  50. node_0
  51. }
  52. }
  53. fn Head(ctx: &mut AnyContext) -> VNode {
  54. html! {
  55. <head>
  56. {"Head Section"}
  57. </head>
  58. }
  59. }
  60. fn Body(ctx: &mut AnyContext) -> VNode {
  61. html! {
  62. <body>
  63. {"Footer Section"}
  64. </body>
  65. }
  66. }
  67. fn Footer(ctx: &mut AnyContext) -> VNode {
  68. html! {
  69. <div>
  70. {"Footer Section"}
  71. </div>
  72. }
  73. }