diff --git a/macros/src/emit.rs b/macros/src/emit.rs index e47f393..64eec83 100644 --- a/macros/src/emit.rs +++ b/macros/src/emit.rs @@ -125,8 +125,8 @@ fn emit_node(node: &RsxNode) -> TokenStream { })); }, - RsxNode::Component(name) => quote! { - scope.child(#name, None); + RsxNode::Component(expr) => quote! { + scope.child(#expr, None); }, RsxNode::Mount(m) => quote! { diff --git a/macros/src/parse.rs b/macros/src/parse.rs index fc4ee19..d97c6f7 100644 --- a/macros/src/parse.rs +++ b/macros/src/parse.rs @@ -20,7 +20,7 @@ impl Parse for RsxRoot { pub enum RsxNode { Text(LitStr), - Component(Ident), + Component(Expr), Mount(Ident), If { deps: Vec, @@ -116,6 +116,7 @@ impl Parse for RsxNode { return Ok(RsxNode::Text(input.parse()?)); } + // Component: path (e.g. HelloWorld) or struct init (e.g. HelloWorld { t: 10 }) Ok(RsxNode::Component(input.parse()?)) } }