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+\/?$/);