Ich habe bekommen unten einen Router wie:Wie aktuelle Route in reagieren-Router 2.0.0-RC5
<Router history={hashHistory}>
<Route path="/" component={App}>
<IndexRoute component={Index}/>
<Route path="login" component={Login}/>
</Route>
</Router>
Hier ist, was ich erreichen will:
- Redirect Benutzer
/login
nicht, wenn angemeldet - Wenn Benutzer
/login
zuzugreifen versucht, wenn sie bereits angemeldet sind, leiten sie/
so jetzt wie Benutzer-Zustand in App
‚s componentDidMount
, dann etwas tun, um zu überprüfen Ich versuche:
if (!user.isLoggedIn) {
this.context.router.push('login')
} else if(currentRoute == 'login') {
this.context.router.push('/')
}
Das Problem hier ist, ich nicht den API aktuelle Route finden zu bekommen.
Ich habe this closed issue vorgeschlagen mit Router.ActiveState Mixin und Route-Handler, aber es sieht aus wie diese beiden Lösungen sind jetzt veraltet.
Es ist in einigen untergeordneten Komponenten nicht verfügbar, aber ich schaffte es, sie über prop passieren. –
Für mich (v2.8.1) war es verfügbar über 'this.state.location.pathname' (anstelle von Requisiten). –
Sie müssen sicherstellen, dass dies zu Ihrer Komponente 'static contextTypes = hinzufügen { Router: React.PropTypes.object }' –