12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- use std::collections::HashMap;
- use dioxus::prelude::*;
- use dioxus_core as dioxus;
- use dioxus_web::WebsysRenderer;
- fn main() {
- wasm_logger::init(wasm_logger::Config::new(log::Level::Debug));
- console_error_panic_hook::set_once();
- wasm_bindgen_futures::spawn_local(async move {
- WebsysRenderer::new_with_props(App, ())
- .run()
- .await
- .expect("major crash");
- });
- }
- use lazy_static::lazy_static;
- lazy_static! {
- static ref DummyData: HashMap<String, String> = {
- let vals = vec![
- ("0 ", "abc123"),
- ("1 ", "abc124"),
- ("2 ", "abc125"),
- ("3 ", "abc126"),
- ("4 ", "abc127"),
- ("5 ", "abc128"),
- ("6 ", "abc129"),
- ("7 ", "abc1210"),
- ("8 ", "abc1211"),
- ("9 ", "abc1212"),
- ("10 ", "abc1213"),
- ("11 ", "abc1214"),
- ("12 ", "abc1215"),
- ("13 ", "abc1216"),
- ("14 ", "abc1217"),
- ("15 ", "abc1218"),
- ("16 ", "abc1219"),
- ("17 ", "abc1220"),
- ("18 ", "abc1221"),
- ("19 ", "abc1222"),
- ];
- vals.into_iter()
- .map(|(a, b)| (a.to_string(), b.to_string()))
- .collect()
- };
- }
- static App: FC<()> = |ctx, _| {
- let items = use_state(&ctx, || DummyData.clone());
- // handle new elements
- let add_new = move |_| {
- items.modify(|m| {
- let k = m.len();
- let v = match (k % 3, k % 5) {
- (0, 0) => "FizzBuzz".to_string(),
- (0, _) => "Fizz".to_string(),
- (_, 0) => "Buzz".to_string(),
- _ => k.to_string(),
- };
- m.insert(k.to_string(), v);
- })
- };
- let elements = items.iter().map(|(k, v)| {
- rsx! {
- li {
- span {"{k}: {v}"}
- button {
- "Remove"
- onclick: move |_| {
- let key_to_remove = k.clone();
- items.modify(move |m| { m.remove(&key_to_remove); } )
- }
- }
- }
- }
- });
- ctx.render(rsx!(
- div {
- h1 {"Some list"}
- // button to add new item
- button {
- "add new"
- onclick: {add_new}
- }
- // list elements
- ul {
- {elements}
- }
- }
- ))
- };
|