mirror of
https://github.com/DioxusLabs/dioxus
synced 2024-11-10 06:34:20 +00:00
feat: add "optional" flag for props
This commit is contained in:
parent
8e842231e4
commit
47bc4e4a44
2 changed files with 23 additions and 1 deletions
|
@ -1,3 +1,5 @@
|
|||
#![allow(non_snake_case)]
|
||||
|
||||
//! Example: README.md showcase
|
||||
//!
|
||||
//! The example from the README.md.
|
||||
|
@ -14,6 +16,7 @@ fn app(cx: Scope) -> Element {
|
|||
a: "asd".to_string(),
|
||||
c: Some("asd".to_string()),
|
||||
d: "asd".to_string(),
|
||||
e: "asd".to_string(),
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -30,8 +33,19 @@ struct ButtonProps {
|
|||
|
||||
#[props(default, strip_option)]
|
||||
d: Option<String>,
|
||||
|
||||
#[props(optional)]
|
||||
e: Option<String>,
|
||||
}
|
||||
|
||||
fn Button(cx: Scope<ButtonProps>) -> Element {
|
||||
todo!()
|
||||
cx.render(rsx! {
|
||||
button {
|
||||
"{cx.props.a}"
|
||||
"{cx.props.b:?}"
|
||||
"{cx.props.c:?}"
|
||||
"{cx.props.d:?}"
|
||||
"{cx.props.e:?}"
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
|
@ -364,6 +364,14 @@ mod field_info {
|
|||
Some(syn::parse(quote!(Default::default()).into()).unwrap());
|
||||
Ok(())
|
||||
}
|
||||
|
||||
"optional" => {
|
||||
self.default =
|
||||
Some(syn::parse(quote!(Default::default()).into()).unwrap());
|
||||
self.strip_option = true;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
_ => {
|
||||
macro_rules! handle_fields {
|
||||
( $( $flag:expr, $field:ident, $already:expr; )* ) => {
|
||||
|
|
Loading…
Reference in a new issue