【问题标题】:React router and nested routes反应路由器和嵌套路由
【发布时间】:2016-08-18 05:20:42
【问题描述】:

我对如何创建以下(非常简单的)路由结构感到困惑。

我有一个应用,它有一个登录组件的顶级路由:

以及应用程序本身的另一个顶级路由(我们称之为 Home 组件):

现在,Home 组件有一个标题、一个侧边栏和子视图的主要空间。

登录组件应显示在/login 路径;这很简单。但让我感到困惑的是,我希望 / 路径在主视图中显示带有特定子组件(我们称之为 Welcome)的 Home 组件。此外,我能想到的大多数其他路由都应该在 Home 组件中呈现子组件。

所以,重申一下:

path / 渲染 Home 组件,其中包含 Welcome 组件

path /foo 渲染 Home 组件,其中包含 Foo 组件

...

path /login 渲染登录组件

感觉我在想的结构是:

  <Route path='/' component={App}>
    <IndexRoute component={Home}>
        <IndexRoute component={Welcome}>
        <Route path='foo' component={Foo}/>
    </IndexRoute>
    <Route path='login' component={Login}/>
  </Route>

但这显然是错误的。实现这种路由结构的正确方法是什么?

【问题讨论】:

  • 听起来您应该在 Welcome 组件中包含 Login 组件。在 Welcome 组件中创建一个渲染函数来渲染 Login 或 Welcome 组件,这取决于他们是否已登录。

标签: reactjs react-router


【解决方案1】:

这可能是一个很好的解决方案,试一试。

<Route component={App}>
  <Route path="/" component={Home}>
    <IndexRoute component={Welcome}/>
    <Route path="/foo" component={Foo}/>
  </Route>
  <Route path="/login" component={Login}/>
</Route>

【讨论】:

  • 耶!这完美!感谢您的解决方案。
猜你喜欢
  • 2019-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-12
  • 2017-07-23
  • 2017-08-06
  • 1970-01-01
  • 2018-02-16
相关资源
最近更新 更多