main.rs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // This test is used by playwright configured in the root of the repo
  2. use dioxus::prelude::*;
  3. fn app(cx: Scope) -> Element {
  4. let mut num = use_state(cx, || 0);
  5. let eval_result = use_state(cx, String::new);
  6. let eval_provider = dioxus_html::prelude::use_eval(cx);
  7. cx.render(rsx! {
  8. div {
  9. "hello axum! {num}"
  10. button { class: "increment-button", onclick: move |_| num += 1, "Increment" }
  11. }
  12. svg { circle { cx: 50, cy: 50, r: 40, stroke: "green", fill: "yellow" } }
  13. div { class: "raw-attribute-div", "raw-attribute": "raw-attribute-value" }
  14. div { class: "hidden-attribute-div", hidden: true }
  15. div {
  16. class: "dangerous-inner-html-div",
  17. dangerous_inner_html: "<p>hello dangerous inner html</p>"
  18. }
  19. input { value: "hello input" }
  20. div { class: "style-div", color: "red", "colored text" }
  21. button {
  22. class: "eval-button",
  23. onclick: move |_| {
  24. let eval = eval_provider(
  25. r#"
  26. window.document.title = 'Hello from Dioxus Eval!';
  27. dioxus.send("returned eval value");
  28. "#,
  29. )
  30. .unwrap();
  31. let setter = eval_result.setter();
  32. async move {
  33. let result = eval.recv().await;
  34. if let Ok(serde_json::Value::String(string)) = result {
  35. setter(string);
  36. }
  37. }
  38. },
  39. "Eval"
  40. }
  41. div { class: "eval-result", "{eval_result}" }
  42. })
  43. }
  44. fn main() {
  45. dioxus_web::launch(app);
  46. }