wxtry wxtry - 2 months ago 39
React JSX Question

How to get current route in react-router 2.0.0-rc5

I have a router like below:

<Router history={hashHistory}>
<Route path="/" component={App}>
<IndexRoute component={Index}/>
<Route path="login" component={Login}/>
</Route>
</Router>


Here's what I want to achieve :


  1. Redirect user to
    /login
    if not logged in

  2. If user tried to access
    /login
    when they are already logged in, redirect them to root
    /



so now I'm trying to check user's state in
App
's
componentDidMount
, then do something like:

if (!user.isLoggedIn) {
this.context.router.push('login')
} else if(currentRoute == 'login') {
this.context.router.push('/')
}


The problem here is I can't find the API to get current route.

I found this closed issue suggested using Router.ActiveState mixin and route handlers, but it looks like these two solutions are now deprecated.

Answer

After reading some more document, I found the solution:

https://github.com/rackt/react-router/blob/master/docs/API.md#location

I just need to access the injected property location of the instance of the component like:

var currentLocation = this.props.location.pathname
Comments