diff --git a/src/lib.rs b/src/lib.rs index 8715c5b..1501ee8 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -319,6 +319,11 @@ impl Children { 0 } } + pub fn insert(&mut self, index: usize, element: Element) { + if let Children::Children(children, _) = self { + children.insert(index, element); + } + } } impl Handler { diff --git a/src/rsx.rs b/src/rsx.rs index 2de3f33..7d1b251 100644 --- a/src/rsx.rs +++ b/src/rsx.rs @@ -13,9 +13,10 @@ macro_rules! check_expr { #[macro_export] macro_rules! parse_rsx_param { ($elem:expr, async $code:block $($rest:tt)*) => { + let elem_len = $elem.children.len(); $elem.instructions.push($crate::Instruction::Load(Handler::new( - |d: &mut Div, _, _| { - d.children.add_child($code); + move |d: &mut Div, _, _| { + d.children.insert(elem_len, $code); } ))); osui::parse_rsx_param!($elem, $($rest)*);