如何确定当前路线在React中是否有效

反应v0.14.7 / react-router:v2.0.1

我有我的路线设置如下:

import { Router, Route, IndexRoute, hashHistory } from "react-router" ReactDOM.render( <Router history={hashHistory}> <Route path="/" component={App}> <IndexRoute component={Index}/> <Route path="/locations" component={Locations}/> <Route path="/products" component={Products}/> </Route> </Router>, document.getElementById('app')); 

我正在尝试在我的一个React类中编写一个方法(使用以下API创build)

export default class MyClass extends React.Component {...}

…确定当前URL的path是否是特定path的path。

例如。 假设当前的URL是http://domain/products然后调用:

isActive('/products')

会返回TRUE

我知道的反应路由器的Link对象activeClassName 。 但是我需要编写一些东西,以编程方式在不同的位置查找<link/>对象。

查看node_modules/react-router/我可以看到modules/isActive.js做我所需要的,但它不是在modules/index.js export ,所以我假设我无法访问它?

我也从API文档看到,有一个RouterContext isActive方法 ,但是我又不知道如何调用这个方法?

OK,感谢Mike'Pomax'Kamermans,我解决了这个问题:

更改创build类API从:

 export default class MyClass extends React.Component { ... } 

至:

 export default React.createClass({ ... }) 

并将以下的contextTypes定义添加到类中:

 export default React.createClass({ contextTypes: { router: React.PropTypes.object }, render(){ console.log(this.context.router.isActive('/foo')); // Now works :) ... } })