1
0

context.rs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. use std::fmt::Display;
  2. use dioxus::{events::on::MouseEvent, prelude::*};
  3. use dioxus_core as dioxus;
  4. use dioxus_web::WebsysRenderer;
  5. fn main() {
  6. wasm_logger::init(wasm_logger::Config::new(log::Level::Trace));
  7. console_error_panic_hook::set_once();
  8. wasm_bindgen_futures::spawn_local(async {
  9. WebsysRenderer::new_with_props(Example, ())
  10. .run()
  11. .await
  12. .unwrap()
  13. });
  14. }
  15. #[derive(Debug)]
  16. struct CustomContext([&'static str; 3]);
  17. static Example: FC<()> = |ctx, props| {
  18. ctx.create_context(|| CustomContext(["Jack", "Jill", "Bob"]));
  19. let names = ctx.use_context::<CustomContext>();
  20. // let name = names.0[props.id as usize];
  21. ctx.render(rsx! {
  22. div {
  23. class: "py-12 px-4 text-center w-full max-w-2xl mx-auto"
  24. span {
  25. class: "text-sm font-semibold"
  26. "Dioxus Example: Jack and Jill"
  27. }
  28. h2 {
  29. class: "text-5xl mt-2 mb-6 leading-tight font-semibold font-heading"
  30. "Hello"
  31. }
  32. CustomButton { id: 0 }
  33. CustomButton { id: 1 }
  34. CustomButton { id: 2 }
  35. }
  36. })
  37. };
  38. #[derive(Props, PartialEq)]
  39. struct ButtonProps {
  40. id: u8,
  41. }
  42. fn CustomButton<'b, 'a,>(ctx: Context<'a>, props: &'b ButtonProps) -> DomTree {
  43. let names = ctx.use_context::<CustomContext>();
  44. let name = names.0[props.id as usize];
  45. ctx.render(rsx!{
  46. button {
  47. class: "inline-block py-4 px-8 mr-6 leading-none text-white bg-indigo-600 hover:bg-indigo-900 font-semibold rounded shadow"
  48. "{name}"
  49. }
  50. })
  51. }