12 个版本

0.2.0-rc12024年2月5日
0.2.0-beta-22024年1月26日
0.1.8 2023年11月19日

1545网页编程

Download history 62/week @ 2024-03-29 14/week @ 2024-04-05

每月 90 次下载

MIT/Apache

84KB
1.5K SLoC

leptos_form: 从 Rust 结构体派生 leptos 表单

文档

功能

  • 自动表单解析 — 专注于数据的表示方式,而不是如何将其从 HTML 中获取和输出
  • 轻松指定标签和输入类,非常适合 Tailwind 集成
  • 标签从结构体字段派生,可以给予表单全局命名空间
  • 通过属性自定义 DOM 布局
  • 与流行的软件包集成

软件包功能

此软件包提供了以下功能,所有功能默认均未激活

  • bigdecimal:为 BigDecimal 提供实现
  • cache-local-storage:支持将中间表单数据写入/从本地存储读取。
  • cache-serde_json:支持将表单状态(反)序列化为 JSON。
  • chrono:为 DateTimeNaiveDateNaiveDateTime 提供实现
  • num-bigint:为 BigIntBigUint 提供实现
  • uuid:为 Uuid 提供实现

示例

mod my_crate {
    use leptos::*;
    use leptos_form::prelude::*;
    use serde::*;

    #[derive(Clone, Debug, Default, Deserialize, Form, Serialize)]
    #[form(
        component(
            action = create_my_data(my_data),
            on_success = |DbMyData { id, .. }, _| view!(<div>{format!("Created {id}")}</div>),
            reset_on_success,
        ),
        label(wrap(class = "my-class", rename_all = "Title Case")),
    )]
    pub struct MyData {
        pub my_name: String,
    }

    #[derive(Clone, Debug, Deserialize, Serialize)]
    pub struct DbMyData {
        pub id: i32,
        pub name: String,
    }

    #[component]
    pub fn MyComponent() -> impl IntoView {
        view! {
            <MyData
                initial={MyData::default()}
                top=|| view!(<input type="button" value="Submit" />)
            />
        }
    }

    #[server]
    async fn create_my_data(my_data: MyData) -> Result<DbMyData, ServerFnError> {
        todo!()
    }
}

依赖关系

~20–33MB
~535K SLoC