#forms #yew

form-yew

帮助在yew中处理表单的宏

2个版本

0.1.1 2022年11月13日
0.1.0 2022年11月7日

#949 in 过程宏

MIT/Apache

19KB
273

这个crate当前状态不应使用

因为目前这个crate基本上不适合用于任何东西。我目前正用它来http://rustjobs.io。计划是随着时间的推移改进这个crate,使其更通用,以处理更多的用例。

很快会修复这个问题

  • 如果使用了bool类型,那么使其成为bool类型;如果是字符串,使其成为字符串;如果ele属性是"checkbox"。

这是一个正在进行中的项目

警告 这个crate文档不良,因此使用起来很困难

待办事项

  • 为doc.rs添加文档

这是什么

  • 这是一个帮助在yew中处理表单的宏。它是如何工作的
use yew_form_derive::YewForm;

// TODO: idk if this is a minial example
// this create input elements that can be used in a from
// to use these elements use the context provided by this
// macro
#[derive(YewForm, PartialEq)]
pub struct AdvertiseForm {
    pub company: String,
    pub position: String,
    pub salary_range: String,
    pub link_to_apply: String, // better suited as a URL type
    #[ele = "textarea"]
    pub description: String,
}


// later on in another file or the same on

...

#[function_component(FormConsumer)]
pub fn consumer() -> Html {
    let form = use_context::<AdvertiseFormProvider>().expect("an advertiser form");

    let input_style = "text-xl sm:text-5xl bg-transparent border-black border p-2.5 rounded-lg";
    html! {
        <form>
            <Company class={input_style} />
            <Position class={input_style} />
            <Salary_range class={input_style} />
            <Description class={input_style}/>
            <Link_to_apply class={input_style}/>

            <button type="submit">
                {"Checkout ->"}
            </button>
        </form>
    }
}

#[function_component(AdvertisePage)]
pub fn advertise_page() -> Html {
    html! {
        <AdvertiseFormProvider>
            <FormConsumer />
        </AdvertiseFormProvider>
    }
}

依赖关系

~13MB
~236K SLoC