А как насчет использования состояния для создания маршрутов после того, как вы знаете ответ на ваш запрос axios?
Примерно так:
import React, { useState, useEffect } from "react";
import { Route, Switch, PrivateRoute } from "react-router-dom";
import axios from "axios";
import Home from "./Home";
import Error404 from "./Error404";
const Routes = () => {
const [user, setUser] = useState("");
useEffect(() => {
axios.get("/login").then(res => {
setUser(res);
});
}, []);
return user ? (
<Switch>
<PrivateRoute exact path="/" component={Home} user={user} />
<Route component={Error404} />
</Switch>
) : null;
};
export default Routes;
Вы можете улучшить его, в зависимости от ваших ответов и других компонентов.