Automatic redirect after login with react-router

Daniel Schmidt picture Daniel Schmidt · Apr 12, 2015 · Viewed 78.4k times · Source

I wanted to build a Facebook login into my react/react-router/flux application. I have a listener registered on the login event and would like to redirect the user to '/dashboard' if they are logged in. How can I do that? location.push didn't work very well, except after reloading the page completely.

Answer

Sajjad Ashraf picture Sajjad Ashraf · Mar 1, 2016

React Router v3

This is what I do

var Router = require('react-router');
Router.browserHistory.push('/somepath');

React Router v4

Now we can use the <Redirect>component in React Router v4.

Rendering a <Redirect> will navigate to a new location. The new location will override the current location in the history stack, like server-side redirects.

import React, { Component } from 'react';
import { Redirect } from 'react-router';
export default class LoginComponent extends Component {
    render(){
        if(this.state.isLoggedIn === true){
            return (<Redirect to="/your/redirect/page" />);
        }else{
            return (<div>Login Please</div>);
        }
    }
}

Documentation https://reacttraining.com/react-router/web/api/Redirect