feat: add "optional" flag for props

This commit is contained in:
Jonathan Kelley 2022-01-16 15:27:41 -05:00
parent 8e842231e4
commit 47bc4e4a44
2 changed files with 23 additions and 1 deletions

View file

@ -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:?}"
}
})
}

View file

@ -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; )* ) => {