Javascript Can';不要做主动检查
我有一条路线Javascript Can';不要做主动检查,javascript,reactjs,react-router,Javascript,Reactjs,React Router,我有一条路线 <Route path="/catalog/:category" component={CatalogList} /> 但我一直都是假的。如何检查这个 例如: const Test = React.createClass({ contextTypes: { router: React.PropTypes.object.isRequired }, render() { console.log(this.props
<Route path="/catalog/:category" component={CatalogList} />
但我一直都是假的。如何检查这个
例如:
const Test = React.createClass({
contextTypes: {
router: React.PropTypes.object.isRequired
},
render() {
console.log(this.props.location.pathname); // /catalog/12
console.log(this.context.router.isActive('/catalog/:category')); // false (need true)
console.log(this.context.router.isActive('/catalog/12')); //true
return <Link to="/catalog/12">Lets test</Link>;
}
});
render((
<div>
<Router history={browserHistory}>
<Route path="/catalog/:category" component={Test} />
<Route path="/" component={Test} />
</Router>
</div>
), document.getElementById('app'));
const Test=React.createClass({
上下文类型:{
路由器:React.PropTypes.object.isRequired
},
render(){
console.log(this.props.location.pathname);///catalog/12
console.log(this.context.router.isActive('/catalog/:category');//false(需要true)
console.log(this.context.router.isActive('/catalog/12');//true
回归测试;
}
});
渲染((
),document.getElementById('app');
如上所述
仅当所有URL参数(包括可选参数及其存在或不存在)匹配时,路由才被视为活动的
这意味着URL参数必须匹配。这就是为什么在您的示例中:
this.context.router.isActive('/catalog/:category'); // false
this.context.router.isActive('/catalog/12'); // true
您可以在location.pathname
this.props.location.pathname.match(/^\/catalog\/\d+\/?$/);
this.props.location.pathname.match(/^\/catalog\/\d+\/?$/);