如果我正确理解您的问题,您可以通过嵌套路由来做到这一点。假设您使用 react-router 4.xx 的示例:在顶层渲染 Router 或 BrowserRouter 等组件(https://reacttraining.com/react-router/web/api/Router)一次,然后嵌套 Route 组件。在您的情况下,您的 index.js 中有主路由器,所以可能是这样的:
<BrowserRouter>
<Route path="/" exact component={Main} />
<Route path="/some-page" component={SomePage} />
<Route path="/admin" component={Admin} />
</BrowserRouter>
然后,在您的Admin
组件中,您不会创建另一个路由器,而是再次渲染 Routes,如下所示:
<div className="admin-panel-container">
<AdminMenu />
<Route path="/admin/users" component={AdminUsers} />
<Route path="/admin/groups" component={AdminGroups} />
</div>
因此,当 URL 匹配时,/admin
您将AdminMenu
在管理面板中看到特定视图的组件。您可能希望从 /admin 重定向到 /admin/users 或某些仪表板,这取决于您的特定应用程序。
现在,如果您想在管理路由中摆脱主路由器周围的一些布局元素,如果没有看到一些代码示例,很难说更多,但我想您可以创建两个组件,例如,Layout 和 AdminLayout,每个包含菜单,标题等并接受子项,并根据它是管理员路由还是常规用户路由在每条路由中使用它们。