перенаправление на домашнюю страницу в React js - PullRequest
0 голосов
/ 16 июня 2020

У меня проблема, когда я обновляю sh страницу, она возвращает меня на домашнюю страницу, потому что, когда я проверяю, что пользователь вошел в систему с помощью Firebase, он автоматически перенаправляется на домашнюю страницу. некоторые могут помочь мне решить эту проблему, заранее спасибо. App. js:




import React from 'react';
import Navbarr from './Component/Navbarr/Navbarr';
import Home from './Component/Home/Home';
import About from './Component/About/About';
import Contact from './Component/Contact/Contact';
import Javascript from './Component/Javascript/Javascript';
import Php from './Component/Php/Php';
import Profile from './Component/Profile/Profile';
import Python from './Component/Python/Python';
import Askquestion from './Component/Askquestion/Askquestion';
import Articles from './Component/Articles/Articles';
import Login from './Component/Login/Login';
import Register from './Component/Register/Register';
import './App.css';
import {connect} from 'react-redux';
import {BrowserRouter as Router,Switch,Route} from 'react-router-dom';
import SidePanel from './Component/SidePanel/SidePanel';


class App extends React.Component{

constructor(props){
    super(props);
    this.state={
    }
}

render()
{
return(
<Router>
<Navbarr  />
<SidePanel currentUser={this.props.currentUser}/>
<Switch>
<Route path='/' exact component={Home}/>
<Route path='/Askquestion'  component={Askquestion}/>
<Route path='/Javascript'  component={Javascript}/>
<Route path='/Php' component={Php}/>
<Route path='/Python' component={Python}/>
<Route path='/About' component={About}/>
<Route path='/Contact' component={Contact}/>
<Route path='/Profile' component={Profile}/>
<Route path='/Articles' component={Articles}/>
<Route path='/Login' component={Login}/>
<Route path='/Register' component={Register}/>
</Switch>
</Router>

  );


}

}

const mapstatetoprops=state=>({
    currentUser:state.user.currentUser
})
export default connect(mapstatetoprops) (App) ;


Index. js

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import {Provider,connect} from 'react-redux';
import {createStore} from 'redux';
import * as serviceWorker from './serviceWorker';
import {BrowserRouter as Router,Switch,Route,withRouter} from 'react-router-dom';
import {composeWithDevTools} from 'redux-devtools-extension';
import rootReducer from './Reducers/Reducers';
import Login from './Component/Login/Login';
import Register from './Component/Register/Register';
import{setuser,clearUser} from './Actions/Actions';
import firebase from './Component/firebase/firebase';
import Spinner from './Component/Spinner/Spinner';

const store=createStore(rootReducer,composeWithDevTools());
     class Root extends React.Component{
    componentDidMount(){
    firebase.auth().onAuthStateChanged(user=>{
        if(user){
      const currentroute=this.props.history.location.pathname;

        this.props.setuser(user);
      this.props.history.push('/');
        }else{
        this.props.history.push('/Login')
        this.props.clearUser();
      }
    })

    }

    render(){

    return this.props.isLoading ? <Spinner/>:  (
  <Switch>

  <Route exact path='/'  component={App}/>
  <Route path='/Register' component={Register}/>
  <Route path='/Login' component={Login}/>

   </Switch>



    )

    }


}
const mapStateFromProps=state=>({

    isLoading:state.user.isLoading

})
const RootWithAuth=withRouter(connect(mapStateFromProps,{setuser,clearUser})(Root));
ReactDOM.render(
   <Provider store={store}>
   <Router> 

    <RootWithAuth />

  </Router>

  </Provider>
  ,document.getElementById('root')
);

serviceWorker.unregister();

и ребята просто хотят знать, что я могу предоставить проект на git хабе, если вы хотеть .

1 Ответ

0 голосов
/ 16 июня 2020

После проверки, вошел ли пользователь в систему, вы можете перенаправить на текущий путь вместо перенаправления на домашнюю страницу

  firebase.auth().onAuthStateChanged(user => {
  if (user) {
    const currentroute = this.props.location.pathname;
    this.props.setuser(user);
    this.props.history.push(currentroute);
  } else {
    this.props.history.push('/Login')
    this.props.clearUser();
  }
})
...