dioxus/packages/web/examples/todomvc/todoitem.rs

30 lines
703 B
Rust
Raw Normal View History

2021-04-01 04:01:42 +00:00
use super::state::TODOS;
use crate::recoil::use_atom_family;
use dioxus_core::prelude::*;
#[derive(PartialEq, Props)]
pub struct TodoEntryProps {
2021-04-02 01:44:18 +00:00
id: uuid::Uuid,
2021-04-01 04:01:42 +00:00
}
2021-06-26 01:15:33 +00:00
pub fn TodoEntry(cx: Context, props: &TodoEntryProps) -> VNode {
let (is_editing, set_is_editing) = use_state(&cx, || false);
let todo = use_atom_family(&cx, &TODOS, cx.id);
2021-04-01 04:01:42 +00:00
2021-06-26 01:15:33 +00:00
cx.render(rsx! (
2021-04-01 04:01:42 +00:00
li {
"{todo.id}"
input {
class: "toggle"
type: "checkbox"
"{todo.checked}"
}
2021-04-02 01:44:18 +00:00
{is_editing.then(|| rsx!(
input {
2021-05-15 16:03:08 +00:00
value: "{todo.contents}"
2021-04-02 01:44:18 +00:00
}
))}
2021-04-01 04:01:42 +00:00
}
))
}