使用 React Router v4 重复路由

Repeated routes with React Router v4

在嵌套组件中重复路由是一种好方法吗?

<App>
   <Route exact path="/" render={props =>
      <Layout>
         <Route exact path="/" component={ComponentUnderLayout} />
         <Route exact path="/path1" component={ComponentUnderLayout2} /> 
      </Layout>
   } />
   <Route path="/signin" component={ComponentWithoutLayout} />
</App>

我不确定这是最好的解决方案。如您所见,我将包装我的应用程序的所有组件,其中一些组件除外。我想为除 /signin 和 /signup 之外的所有路径呈现 Layout 和 Header。

也许有更好的解决方案?

关于您的代码,我担心的事情很少:1. Render 是一个函数:

<Route exact path="/" render={props =>
   <Layout>
      <Route exact path="/" component={ComponentUnderLayout} />
      <Route exact path="/path1" component={ComponentUnderLayout2} /> 
   </Layout>
} />

2。 ComponentUnderLayout2 永远不会被渲染:

<Route exact path="/" render={props =>
   {/* you have declared that this will get render ONLY when URL is exactly ` "/" which means "/path1" will never get to this place */}
   <Layout>
      <Route exact path="/" component={ComponentUnderLayout} />
      <Route exact path="/path1" component={ComponentUnderLayout2} /> 
   </Layout>
} />

因此,如果您更正上述内容,您将得到:

<App>
   <Route exact path="/" render={(props) => 
      <Layout>
         <ComponentUnderLayout {...props} />
      </Layout>
   } />
   <Route path="/path1" render={props => 
      <Layout>
         <ComponentUnderLayout2 {...props} />
      </Layout>
   } /> 
   <Route path="/signin" component={ComponentWithoutLayout} />
</App>

编辑:

<App>
   <Layout>
     <Route exact path="/" component={ComponentUnderLayout} />
     <Route exact path="/path1" component={ComponentUnderLayout2} />
   </Layout>
   <Route exact path="/signin" component={ComponentWithoutLayout} />
</App>