我的路线看起来像这样:
<Route path="sites/:siteid" component={SiteContainer} >
<Route path="restore/:version/:action" component={RestoreContainer} />
<Route path="migrate/:version/:action" component={MigrateContainer} />
</Route>
如果我当前的网址是:
sites/1/restore/0/list
在SiteContainer
内部的React组件中,如何知道当前正在提供哪个childRoutes
?在此示例中为childRoutes[0]
。
答案 0 :(得分:0)
您可以使用context.router.isActive
方法
isActive(pathOrLoc, indexOnly)
返回true
或false
,具体取决于pathOrLoc
是否有效。路由分支中的每个路由都匹配(子路由处于活动状态,因此父路由也是如此),除非指定indexOnly
,在这种情况下,它只匹配确切的路径。
如果所有网址参数都匹配,则路由仅被视为有效,包括可选参数及其是否存在。
但是,只会检查显式指定的查询参数。这意味着isActive({ pathname: '/foo', query: { a: 'b' } })
会在位置为true
时返回/foo?a=b&c=d
。要求不存在查询参数,请将其值指定为显式undefined
,例如isActive({ pathname: '/foo', query: { a: 'b', c: undefined } })
,在此示例中为false
。