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.
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');
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With