I'm using React-Routerv4 , and when I login using the login form , i set the app component state value isUser to true from child component login using function setUserLogin, which i can debug correctly in the console after logging in. Also I have specified , that if i migrate to /login path ,it checks isUser value in state to migrate to /home page if user is already logged in(isUser is true) . But that value is now automatically changed to default value false , when i enter /login in the browser and it shows login page instead of home page. Im new to React , so am I missing something here?
Here is the code snippet :
import React from 'react';
import ReactDom from 'react-dom';
import 'materialize-css/bin/materialize.css'
import 'materialize-css/bin/materialize.js';
import {BrowserRouter as Router, Route , Redirect} from 'react-router-dom';
import {LoginForm} from './components/login';
import {Home} from './components/home';
import {Main} from './components/main';
import {Room} from './components/room';
import "materialize-css";
import 'materialize-css/js/toasts';
class App extends React.Component {
constructor(props){
super(props);
this.state={
isUser : false
}
this.setUserLogin = this.setUserLogin.bind(this);
}
setUserLogin(){
this.setState({isUser:true});
}
render() {
return <Router>
<div>
<Route exact path="/" component={Home}/>
<Route path="/login" render={(props)=>(
this.state.isUser ? <Redirect to="/home" /> : <LoginForm history={props.history} setUserLogin = {this.setUserLogin}/>
)} />
<Route path="/home" component={Main}/>
<Route path="/room" component={Room}/>
</div>
</Router>
};
}
ReactDom.render(<App/>, document.getElementById('app'));