Вы можете обернуть свой маршрутизатор внутри auth-is-loaded
компонента:
import React from "react";
import { useSelector } from "react-redux";
import { isLoaded } from "react-redux-firebase";
export default function AuthIsLoaded({ children }) {
const auth = useSelector(state => state.firebase.auth);
if (isLoaded(auth)) return children;
return <div>Loading...</div>;
}
Так приложение. js будет выглядеть так:
return (
<Provider store={store}>
<BrowserRouter>
<AuthIsLoaded>
<NavBar />
<Switch>
<Route exact path="/" component={Home} />
<PrivateRoute path="/about" component={About} />
<PrivateRoute path="/profile" component={Profile} />
<Route path="/login" component={Login} />
<Route path="/signup" component={SignUp} />
<Route path="/logout" component={Logout} />
</Switch>
</AuthIsLoaded>
</BrowserRouter>
</Provider>
);
Так что после аутентификации загрузил ваш коммутатор будет обработан PrivateRoutes, который не получит isAuthenticated перед его редукционной загрузкой.
Извините за некоторый дополнительный код, я скопировал из своего приложения, но вы должны понять.