REACT ROUTER DOM中的嵌套路由,在路由器中包装组件

时间:2018-05-30 11:38:11

标签: reactjs routing react-router-v4 react-router-dom

我有2个组件,我想要在一些路由中使用一个组件,在其余路由中使用其他组件。

在这两个组件中,我在两个组件中使用{props.children}来嵌套路由。

我的代码是:

<Router history={history}>
  <div className='routeContainer'>
    <Switch>

      <Component1>
        <Route exact path='/' component={Dashboard} />
        <Route exact path='/abc' component={ComponentAbc} />
      </Component1>

      <Component2>
        <Route exact path='/def' component={ComponentDEF} />
        <Route exact path='/xyz' component={ComponentXYZ} />
      </Component2>
    </Switch>
  </div>
</Router>

在Component1和Component 2中我正在使用{this.props.children} 如下:

render () {
 return (
  <div>

      <SideBar />
      <Header />
      {this.props.children} 
  </div>
 )
}

这不起作用,请帮助使这个结构有效。

1 个答案:

答案 0 :(得分:3)

  

&#34; <Switch>的所有孩子都应该是<Route><Redirect>元素。   只会呈现匹配当前位置的第一个孩子。&#34; - react-router

如果您想要路线组件的父级,您可以执行以下操作之一:

  1. 包裹内部组件
  2. 包裹 RouteProps - 组件
  3. 无论哪种方式,您都需要移除<Routes/>内的<Redirects/><Switch>内的所有内容

    备选 2

    的示例
    <Route exact path='/' component={()=> (
      <Component1>
        <Dashboard />
      </Component1>  
    )} />