borrowedstate.rs 933 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #![allow(non_snake_case)]
  2. use dioxus::prelude::*;
  3. use dioxus_core as dioxus;
  4. use dioxus_core_macro::*;
  5. use dioxus_html as dioxus_elements;
  6. #[test]
  7. fn test_borrowed_state() {
  8. let _ = VirtualDom::new(Parent);
  9. }
  10. fn Parent(cx: Scope) -> Element {
  11. let value = cx.use_hook(|_| String::new());
  12. cx.render(rsx! {
  13. div {
  14. Child { name: value }
  15. Child { name: value }
  16. Child { name: value }
  17. Child { name: value }
  18. }
  19. })
  20. }
  21. #[derive(Props)]
  22. struct ChildProps<'a> {
  23. name: &'a str,
  24. }
  25. fn Child<'a>(cx: Scope<'a, ChildProps<'a>>) -> Element {
  26. cx.render(rsx! {
  27. div {
  28. h1 { "it's nested" }
  29. Child2 { name: cx.props.name }
  30. }
  31. })
  32. }
  33. #[derive(Props)]
  34. struct Grandchild<'a> {
  35. name: &'a str,
  36. }
  37. fn Child2<'a>(cx: Scope<'a, Grandchild<'a>>) -> Element {
  38. cx.render(rsx! {
  39. div { "Hello {cx.props.name}!" }
  40. })
  41. }