如何确定当前路线在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 :) ... } })