React Router - 为不相关的路由指定父组件

IT技术 reactjs react-router
2021-05-15 18:37:35

我的 React 应用程序中有 3 个页面以及以下路线:

  1. 登录 (/)
  2. 仪表板(/仪表板)
  3. 项目 (/projects)

我希望仪表板和项目页面有一个标题,但登录页面不应该有任何标题。

目前的路线是这样的:

<Router>
    <Route path="/" component={Login}>
    <Route path="/dashboard" component={Dashboard} />
    <Route path="/projects" component={Projects} />
</Router>

我创建了一个名为的组件Shell,它仅提供标题。如何设置我的路由器,使 Shell 是页面的父组件DashboardProjects但不是Login页面的父组件

编辑 1

我想知道是否可以使用这样的无路径父级来围绕子组件渲染 Shell:

<Router>
    <Route path="/" component={Login}>
    <Route component={Shell}>
        <Route path="/dashboard" component={Dashboard} />
        <Route path="/projects" component={Projects} />
    </Route>
</Router>

编辑 2

刚刚尝试了上面的更改,它起作用了!阅读文档path不是必需的props。所以在上面的代码中<Route component={Shell}>是完全合法的。

1个回答

您在编辑 1 中的内容是正确的。

<Router>
  <Route component={Login}>
  <Route component={Shell}>
    <Route path="/dashboard" component={Dashboard} />
    <Route path="/projects" component={Projects} />
  </Route>
</Router>

在您的<Shell>组件中,您可以执行以下操作:

import Header from './Header';

...

render() {
  return (
    <div id="shell">
      <Header />
      {this.props.children}
    </div>
  );
}
...