1
0

deep.rs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. use dioxus_web::{dioxus::prelude::*, WebsysRenderer};
  2. fn main() {
  3. wasm_logger::init(wasm_logger::Config::new(log::Level::Debug));
  4. console_error_panic_hook::set_once();
  5. wasm_bindgen_futures::spawn_local(WebsysRenderer::start(CustomA))
  6. }
  7. use components::CustomB;
  8. fn CustomA<'a>(ctx: Context<'a>, props: &'a ()) -> DomTree {
  9. let (val, set_val) = use_state(&ctx, || "abcdef".to_string());
  10. ctx.render(rsx! {
  11. div {
  12. class: "m-8"
  13. "CustomA {val}"
  14. button {
  15. "Upper"
  16. onclick: move |_| set_val(val.to_ascii_uppercase())
  17. }
  18. button {
  19. "Lower"
  20. onclick: move |_| set_val(val.to_ascii_lowercase())
  21. }
  22. CustomB {
  23. val: val.as_ref()
  24. }
  25. }
  26. })
  27. }
  28. mod components {
  29. use super::*;
  30. #[derive(Debug, Props, PartialEq)]
  31. pub struct PropsB<'src> {
  32. val: &'src str,
  33. }
  34. pub fn CustomB<'a>(ctx: Context<'a>, props: &'a PropsB<'a>) -> DomTree {
  35. let (first, last) = props.val.split_at(3);
  36. ctx.render(rsx! {
  37. div {
  38. class: "m-8"
  39. "CustomB {props.val}"
  40. CustomC {
  41. val: first
  42. }
  43. CustomC {
  44. val: last
  45. }
  46. }
  47. })
  48. }
  49. #[derive(Debug, Props, PartialEq)]
  50. struct PropsC<'src> {
  51. val: &'src str,
  52. }
  53. fn CustomC<'a>(ctx: Context<'a>, props: &'a PropsC<'a>) -> DomTree {
  54. ctx.render(rsx! {
  55. div {
  56. class: "m-8"
  57. "CustomC {props.val}"
  58. }
  59. })
  60. }
  61. }