feat(docs): Improved shared state, use_effect and use_memo docs

This commit is contained in:
marc2332 committed 2023-06-28 00:15:00 +02:00
1 parent dfa4d8d989
commit 8a2f9f3fcb
7 files changed
+158 -19

No files matched your search

+54
View File
@@ -0,0 +1,54 @@
#![allow(non_snake_case)]
use dioxus::prelude::*;
fn main() {
dioxus_desktop::launch(App);
}
struct DarkMode(bool);
#[rustfmt::skip]
pub fn App(cx: Scope) -> Element {
use_shared_state_provider(cx, || DarkMode(false));
render!(
DarkModeToggle {},
AppBody {}
)
}
pub fn DarkModeToggle(cx: Scope) -> Element {
let dark_mode = use_shared_state::<DarkMode>(cx).unwrap();
let style = if dark_mode.read().0 {
"color:white"
} else {
""
};
cx.render(rsx!(label {
style: "{style}",
"Dark Mode",
input {
r#type: "checkbox",
oninput: move |event| {
let is_enabled = event.value == "true";
dark_mode.write().0 = is_enabled;
},
},
}))
}
fn AppBody(cx: Scope) -> Element {
let dark_mode = use_shared_state::<DarkMode>(cx).unwrap();
let is_dark_mode = dark_mode.read().0;
let answer = if is_dark_mode { "Yes" } else { "No" };
render!(
p {
"Is Dark mode enabled? {answer}"
}
)
}