2017-08-22 35 views
1

在反应路由器(4.1.2),我有以下途径呈现:获得非精确的路线匹配路由PARAM

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

里面我MapContainer我得到的organisationId通过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} /> 

,但不知道那是做正确的方式。

对此的任何建议将是非常有益的。

回答

2

使用这个代替:

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

:profileId?意味着该参数是可选。所以它匹配这两条路径:

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