dioxus/examples/fermi.rs

58 lines
1.2 KiB
Rust
Raw Normal View History

2022-02-17 15:38:51 +00:00
#![allow(non_snake_case)]
use dioxus::prelude::*;
use fermi::*;
2022-02-17 15:38:51 +00:00
fn main() {
dioxus_desktop::launch(app)
2022-02-17 15:38:51 +00:00
}
static NAME: Atom<String> = Atom(|_| "world".to_string());
2022-02-17 15:38:51 +00:00
fn app(cx: Scope) -> Element {
use_init_atom_root(cx);
let name = use_read(cx, &NAME);
2022-02-17 15:38:51 +00:00
cx.render(rsx! {
div { "hello {name}!" }
Child {}
2022-11-16 07:22:41 +00:00
ChildWithRef {}
2022-02-17 15:38:51 +00:00
})
}
fn Child(cx: Scope) -> Element {
let set_name = use_set(cx, &NAME);
2022-02-17 15:38:51 +00:00
cx.render(rsx! {
button {
onclick: move |_| set_name("dioxus".to_string()),
"reset name"
}
})
}
2022-04-25 00:47:22 +00:00
static NAMES: AtomRef<Vec<String>> = AtomRef(|_| vec!["world".to_string()]);
2022-04-25 00:47:22 +00:00
fn ChildWithRef(cx: Scope) -> Element {
let names = use_atom_ref(cx, &NAMES);
2022-04-25 00:47:22 +00:00
cx.render(rsx! {
div {
ul {
names.read().iter().map(|f| rsx!{
li { "hello: {f}" }
})
}
button {
onclick: move |_| {
let names = names.clone();
cx.spawn(async move {
names.write().push("asd".to_string());
})
},
"Add name"
2022-04-25 00:47:22 +00:00
}
}
})
}