فهرست منبع

fix nested nest segments

Evan Almloff 1 سال پیش
والد
کامیت
97115f6537
2فایلهای تغییر یافته به همراه6 افزوده شده و 2 حذف شده
  1. 5 2
      packages/router-macro/src/route_tree.rs
  2. 1 0
      packages/router/src/history/web.rs

+ 5 - 2
packages/router-macro/src/route_tree.rs

@@ -187,13 +187,16 @@ impl<'a> RouteTree<'a> {
                 let nest = self.entries.insert(nest);
                 let nest = self.entries.insert(nest);
                 let segments = match current_route.and_then(|id| self.get_mut(id)) {
                 let segments = match current_route.and_then(|id| self.get_mut(id)) {
                     Some(RouteTreeSegmentData::Static { children, .. }) => children,
                     Some(RouteTreeSegmentData::Static { children, .. }) => children,
-                    Some(r) => unreachable!("{r:?} is not a static segment"),
+                    Some(RouteTreeSegmentData::Nest { children, .. }) => children,
+                    Some(r) => {
+                        unreachable!("{current_route:?}\n{r:?} is not a static or nest segment",)
+                    }
                     None => &mut segments,
                     None => &mut segments,
                 };
                 };
                 segments.push(nest);
                 segments.push(nest);
 
 
                 // Update the current route
                 // Update the current route
-                current_route = segments.last().cloned();
+                current_route = Some(nest);
             }
             }
 
 
             match route.next_static_segment() {
             match route.next_static_segment() {

+ 1 - 0
packages/router/src/history/web.rs

@@ -160,6 +160,7 @@ impl<R: Routable> WebHistory<R> {
         );
         );
 
 
         let current_route = myself.current_route();
         let current_route = myself.current_route();
+        log::trace!("initial route: {:?}", current_route);
         let current_url = current_route.to_string();
         let current_url = current_route.to_string();
         let state = myself.create_state(current_route);
         let state = myself.create_state(current_route);
         let _ = replace_state_with_url(&myself.history, &state, Some(&current_url));
         let _ = replace_state_with_url(&myself.history, &state, Some(&current_url));