我最近一直在将一个项目从AngularJS + UI-Router + UI-Router-Extras转换为React + React-Router。
我想为 React-Router 带来的 UI-Router-Extras 中更好的功能之一称为
Deep State Redirect。在此功能中,当导航到具有子路由的路由时,应用程序知道将用户重定向到它的最后一个访问过的子路由,或者如果它的子路由还没有被访问过,那么它会重定向到它的第一个子路由。挂号的。
例如,如果加载的路由树如下所示:
/main
|_/main_sub_1
|_/main_sub_2
/secondary
并且用户从 route 开始/main/main_sub_2
,然后转到/secondary
,然后转到/main
,他们将被自动重定向到,/main/main_sub_2
因为/main/main_sub_2
这是最后一次/main
访问的子路线。
我知道我可以通过使用
<IndexRedirect to={getLastSubRoute(parentRoute)}>
whereparentRoute
是父<Route>
标签的完整路径在反应路由器中实现这一点,并且getLastSubRoute
是不言自明的,但问题是我需要将这样的<IndexRedirect>
标签添加到我创建的每条路由中,这不是最优的,因为路由是动态加载的,可能有多达 100 个子路由,并且应用程序的大部分路由将由其他人编写,我不应该依赖他们记住在<Route>
他们编写的每个标签下添加该标签.
理想情况下,我应该能够对<Router>
React 路由定义中的基本标记应用一些函数或 mixin,以将此功能添加到它下面的所有路由中,但我不确定从哪里开始。我该如何解决这个问题?