在非精确路线匹配

时间:2017-08-22 19:49:05

标签: react-router react-router-v4

在反应路由器(4.1.2)中,我有以下路由呈现:

<Route path="/organisations/:organisationId/profiles" component={MapContainer} />

在我的MapContainer中,我通过this.props.match.params.organisationId

按预期获得了organisationId

MapContainer组件也会在任何子路径上呈现 /organisations/:organisationId/profiles/:profileId

这可以按预期工作,但match道具不包含profileId,只包含organisationId。哪种...有道理,因为它是它为路线找到的第一个“匹配”。但有没有办法在MapContainer中匹配一条非精确路线时得到:profileId?

使用exact属性渲染两个不同的路由似乎适用于我的用例:

<Route exact path="/organisations/:organisationId/profiles" component={MapContainer} />
<Route exact path="/organisations/:organisationId/profiles/:profileId" component={MapContainer} />

但不确定这是否正确。

对此的任何建议都会非常有用。

1 个答案:

答案 0 :(得分:2)

请改用:

<Route path="/organisations/:organisationId/profiles/:profileId?" component={MapContainer} />

:profileId?表示该参数是可选的。所以它匹配这两条路径:

/organisations/apple/profiles
/organisations/apple/profiles/1