识别当前/活动的子路由

时间:2016-08-15 12:42:13

标签: reactjs react-router

我的路线看起来像这样:

<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]

1 个答案:

答案 0 :(得分:0)

您可以使用context.router.isActive方法

isActive(pathOrLoc, indexOnly)

返回truefalse,具体取决于pathOrLoc是否有效。路由分支中的每个路由都匹配(子路由处于活动状态,因此父路由也是如此),除非指定indexOnly,在这种情况下,它只匹配确切的路径。

如果所有网址参数都匹配,则路由仅被视为有效,包括可选参数及其是否存在。

但是,只会检查显式指定的查询参数。这意味着isActive({ pathname: '/foo', query: { a: 'b' } })会在位置为true时返回/foo?a=b&c=d。要求不存在查询参数,请将其值指定为显式undefined,例如isActive({ pathname: '/foo', query: { a: 'b', c: undefined } }),在此示例中为false