Я использую реагирующий маршрутизатор-дом для управления своими маршрутами:
const Routes = () => {
return (
<BrowserRouter>
<div>
<Route path="/" component={Navbar} />
<Switch>
<Route exact path="/" component={Main} />
<Route path="/signin" component={SignIn} />
<Route path="/signup" component={SignUp} />
<PrivateRoute path="/dashboard" component={DashboardRoutes} />
<Route path="*" component={() => <h1>Page not found</h1>} />
</Switch>
</div>
<div>
<Route path="/" component={Footer} />
</div>
</BrowserRouter>
);
};
Я хочу отобразить Navbar
, только если пользователь не аутентифицирован. Если пользователь аутентифицирован, я не хочу отображать Navbar
и хочу перенаправить его на панель инструментов.
Я пробовал со встроенным кондиционером:
const Routes = () => {
return (
<BrowserRouter>
<div>
{!isAuthenticated() && <Route path="/" component={Navbar} />}
<Switch>
<Route exact path="/" component={Main} />
<Route path="/signin" component={SignIn} />
<Route path="/signup" component={SignUp} />
<PrivateRoute path="/dashboard" component={DashboardRoutes} />
<Route path="*" component={() => <h1>Page not found</h1>} />
</Switch>
</div>
<div>
<Route path="/" component={Footer} />
</div>
</BrowserRouter>
);
};
Однако, когда я не вошел в систему, а затем вошел в систему, Navbar
сохраняется, потому что он был обработан, когда isAuthenticated
был ложным.
Как мне этого добиться?
Спасибо!
PS: у меня уже есть функция isAuthenticated
.