diff --git a/packages/router/src/components/router.rs b/packages/router/src/components/router.rs index 37899d19c..26f17e881 100644 --- a/packages/router/src/components/router.rs +++ b/packages/router/src/components/router.rs @@ -101,7 +101,7 @@ pub fn Router<'a>(cx: Scope<'a, RouterProps<'a>>) -> Element { regen_route(*listener); } - for route in svc.slots.borrow().keys() { + for route in svc.ordering.borrow().iter().rev() { regen_route(*route); } } diff --git a/packages/router/src/service.rs b/packages/router/src/service.rs index 2e8f17417..410e8a33d 100644 --- a/packages/router/src/service.rs +++ b/packages/router/src/service.rs @@ -49,6 +49,8 @@ pub struct RouterCore { pub(crate) slots: Rc>>, + pub(crate) ordering: Rc>>, + pub(crate) onchange_listeners: Rc>>, pub(crate) history: Box, @@ -102,6 +104,7 @@ impl RouterCore { tx, route_found: Cell::new(None), stack: RefCell::new(vec![route]), + ordering: Default::default(), slots: Default::default(), onchange_listeners: Default::default(), history, @@ -167,6 +170,7 @@ impl RouterCore { pub(crate) fn register_total_route(&self, route: String, scope: ScopeId) { let clean = clean_route(route); self.slots.borrow_mut().insert(scope, clean); + self.ordering.borrow_mut().push(scope); } pub(crate) fn should_render(&self, scope: ScopeId) -> bool { @@ -366,3 +370,18 @@ mod web { } } } + +/* + + + + + + +Route { to: "/blog/:id" } +Route { to: "/blog/:id" } +Route { to: "/blog/:id" } +Route { to: "/blog/:id" } +Route { to: "/blog/:id" } + +*/