【问题标题】:Match multiple path with react router v4使用反应路由器 v4 匹配多个路径
【发布时间】:2017-04-21 13:59:11
【问题描述】:

鉴于我有 2 条路径渲染相同的组件,我该如何避免重复这样的路由配置:

<Route path="/path1" component={MyComp} />
<Route path="/path2" component={MyComp} />

【问题讨论】:

标签: reactjs react-router


【解决方案1】:

到目前为止我找到的最佳解决方案(但似乎有点奇怪):

<Route path="/:path(path1|path2)" component={MyComp} />

【讨论】:

  • 为什么不直接做path="/(path1|path2)"
【解决方案2】:

很好的答案。这也有助于以下情况:

<Route path="/path/path1" component={MyComp} />
<Route path="/path/:subpath(path2|path3)" component={MyAnotherComp} />

没有(path2|path3),如果路径是/path/path2,那么MyCompMyAnotherComp 两个组件都会被挂载。

PS。会作为评论添加,但不符合条件:)。

【讨论】:

    【解决方案3】:
    <Route path={["/common-one", "/common-two"]} component={Common} />
    

    对于以上版本 5 https://reactrouter.com/web/api/Route

    【讨论】:

    • 这工作得很好,这应该是公认的答案
    【解决方案4】:

    如果您需要允许多个匹配(不同的参数)但也没有参数 - 例如匹配网址:

    • /问题
    • /问题/已发布
    • /问题/已回答

    您可以使用可选参数来做到这一点(注意括号后的问号)

    <Route path="/questions/:tab(posted|answered)?" component={...} />
    

    【讨论】:

      猜你喜欢
      • 2018-02-06
      • 2019-05-23
      • 2018-10-24
      • 1970-01-01
      • 2017-12-06
      • 1970-01-01
      • 1970-01-01
      • 2017-10-21
      • 2018-03-31
      相关资源
      最近更新 更多