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

wxtry picture wxtry · Jan 27, 2016 · Viewed 113.6k times · Source

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

wxtry picture wxtry · Jan 28, 2016

After reading some more document, I found the solution:

https://github.com/ReactTraining/react-router/blob/master/packages/react-router/docs/api/location.md

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

var currentLocation = this.props.location.pathname