6

I am using react-router-2. I want to redirect to a page programmatically after successful login or after some action performed.

My route file is like this(routes.js)

   <Route path="/" component={App}>
       <IndexRoute component={Home}/>
       <Route path="/login" component={Login} onEnter={redirectToDashboard}/>
       <Route path="dashboard" component={Dashboard} onEnter={redirectToLogin}/>
   </Route>

onEnter hooks

function redirectToLogin(nextState, replace) {
    // Perform some authentication check
    if (!loggedIn) {
        replace({
            pathname: '/login',
            state: { nextPathname: nextState.location.pathname }
        });
    }
}

function redirectToDashboard(nextState, replace) {
  // Perform some check if already authenticated 
    if (loggedIn) {
        replace('/dashboard')
    }
}

I want to redirect to Dashboard component from Login component after successful login.

WitVault
  • 23,445
  • 19
  • 103
  • 133

1 Answers1

5

To redirect you can use router object from context. You have to declare context types in your component (component from which you make redirection). More about context link

ES6/7 syntax:

static contextTypes = {
  router: React.PropTypes.object.isRequired
}

Now you have access to router object and you can make redirection:

this.context.router.push('/dashboard');
Krzysztof Sztompka
  • 7,066
  • 4
  • 33
  • 48