React Firebase на refre sh r направляет на вход, а затем на домашнюю страницу - PullRequest
0 голосов
/ 19 июня 2020

Пользователь авторизован. При refre sh путь к странице сбрасывается и перенаправляется на «/ login», а затем на «/». Также я не могу попасть на страницу, набрав URL. То же самое.

Приложение. js:

<div className="wrapper">
   {app.auth().currentUser != null ?
      (  
         <AuthProvider>
            <Router>
               <div>
                  <Switch>
                     <div className="wrapper">
                        <Route path="/" render={MainComponent} />    
                     </div>
                  </Switch>
               </div>
            </Router>
         </AuthProvider>
      ) : (
         <AuthProvider>
            <Router>
               <div>
                  <Switch>
                     <div className="wrapper">
                        <Route path="/login" exact render={LoginComponent} />
                        <Route path="/signup" exact component={SignUpComponent} />
                        <Route path="/forgetpass" exact render={ForgetPassComponent} />
                        <Redirect from='*' to='/login' />
                     </div>
                  </Switch>
               </div>
            </Router>
         </AuthProvider>
      )}
</div>

1 Ответ

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

вместо того, чтобы делать тройной, как вы это сделали, используйте вместо этого частный / защищенный маршрут?

const ProtectedRoute = ({ component: Component, ...rest }) => {
    return app.auth().currentUser ? <Component /> : <Redirect from="" to="/login" noThrow />
}

              <Switch>
                 <div className="wrapper">
                    <ProtectedRoute path="/" render={MainComponent} />    
                    <Route path="/login" exact render={LoginComponent} />
                    <Route path="/signup" exact component={SignUpComponent} />
                    <Route path="/forgetpass" exact render={ForgetPassComponent} />
                    <Redirect from='*' to='/login' />
                 </div>
              </Switch>

тогда вы можете не увидеть, как происходит перенаправление, как вы. Если да, то я бы рекомендовал сохранить его в localStorage, а затем читать оттуда. Раньше у меня возникало мерцание, когда я использовал onAuthStateChange из firebase самостоятельно. но при использовании вместе с localstorage это было нормально. Я думаю, это то, что вы получаете, когда говорите: "При refre sh путь к странице сброшен и перенаправляется на" / login ", а затем на" / ""

...