1
0

deep.rs 1.7 KB

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