在反应路由器(4.1.2)中,我有以下路由呈现:
<Route path="/organisations/:organisationId/profiles" component={MapContainer} />
在我的MapContainer中,我通过this.props.match.params.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} />
但不确定这是否正确。
对此的任何建议都会非常有用。
答案 0 :(得分:2)
请改用:
<Route path="/organisations/:organisationId/profiles/:profileId?" component={MapContainer} />
:profileId?
表示该参数是可选的。所以它匹配这两条路径:
/organisations/apple/profiles
/organisations/apple/profiles/1