fix(app): enhance signal management in App component
- Switched from `create_signal` to a tuple-based signal declaration using `(items_signal, set_items)` for improved clarity. - Replaced `items.update` with a closure-based update approach for `set_items`. - Added `Box::new` to `ItemForm`'s `on_submit` to properly handle the function's lifetime and scope. - Removed unused imports for `leptos_meta` and `leptos_router` to clean up the code.
This commit is contained in:
parent
de6559e5e4
commit
fca8c6fa2f
11
src/app.rs
11
src/app.rs
|
@ -1,16 +1,13 @@
|
||||||
use leptos::*;
|
use leptos::*;
|
||||||
use leptos_meta::*;
|
|
||||||
use leptos_router::*;
|
|
||||||
use crate::components::{item_form::ItemForm, items_list::ItemsList};
|
use crate::components::{item_form::ItemForm, items_list::ItemsList};
|
||||||
use crate::models::item::Item;
|
use crate::models::item::Item;
|
||||||
use std::sync::Arc;
|
|
||||||
|
|
||||||
#[component]
|
#[component]
|
||||||
pub fn App() -> impl IntoView {
|
pub fn App() -> impl IntoView {
|
||||||
let items = create_signal(Vec::<Item>::new());
|
let (items_signal, set_items) = create_signal(Vec::<Item>::new());
|
||||||
|
|
||||||
let add_item = move |name: String, description: String, tags: Vec<(String, String)>| {
|
let add_item = move |name: String, description: String, tags: Vec<(String, String)>| {
|
||||||
items.update(|items| {
|
set_items;(|mut items: Vec<Item>| {
|
||||||
items.push(Item {
|
items.push(Item {
|
||||||
id: uuid::Uuid::new_v4().to_string(),
|
id: uuid::Uuid::new_v4().to_string(),
|
||||||
name,
|
name,
|
||||||
|
@ -23,8 +20,8 @@ pub fn App() -> impl IntoView {
|
||||||
view! {
|
view! {
|
||||||
<div>
|
<div>
|
||||||
<h1>CompareWare</h1>
|
<h1>CompareWare</h1>
|
||||||
<ItemForm on_submit=add_item />
|
<ItemForm on_submit=Box::new(add_item) />
|
||||||
<ItemsList items=items.get().clone() />
|
<ItemsList items={items_signal.get().clone()} />
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue