deep.rs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. use dioxus_web::{WebsysRenderer, dioxus::prelude::*};
  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. "CustomA {val}"
  12. button {
  13. "Upper"
  14. onclick: move |_| set_val(val.to_ascii_uppercase())
  15. }
  16. button {
  17. "Lower"
  18. onclick: move |_| set_val(val.to_ascii_lowercase())
  19. }
  20. CustomB {
  21. val: val
  22. }
  23. }
  24. })
  25. }
  26. #[derive(Debug, Props, PartialEq)]
  27. struct PropsB<'src> {
  28. val: &'src str
  29. }
  30. fn CustomB<'a>(ctx: Context<'a>, props: &'a PropsB<'a>) -> DomTree {
  31. let (first, last) = props.val.split_at(3);
  32. ctx.render(rsx!{
  33. div {
  34. "CustomB {props.val}"
  35. CustomC {
  36. val: first
  37. }
  38. CustomC {
  39. val: last
  40. }
  41. }
  42. })
  43. }
  44. #[derive(Debug, Props, PartialEq)]
  45. struct PropsC<'src> {
  46. val: &'src str
  47. }
  48. fn CustomC<'a>(ctx: Context<'a>, props: &'a PropsC<'a>) -> DomTree {
  49. ctx.render(rsx!{
  50. div {
  51. "CustomC {props.val}"
  52. }
  53. })
  54. }