Я новичок в реакции JS.Теперь у меня есть личный маршрут.
const PrivateRoute = ({ component: Component, isFetching, hasUserLogIn, path, ...rest }) => {
hasUserLogIn = localStorage.getItem("access_token");
if (hasUserLogIn !== undefined && hasUserLogIn !== null) {
hasUserLogIn = true;
} else {
hasUserLogIn = false;
}
console.log("hasUserLogIn",hasUserLogIn);
return hasUserLogIn ?
(
<Route
{...rest}
path={path}
component={Component}
/>
)
:
(
<Redirect
to={{
pathname: "/login",
state: { from: path }
}}
/>
)
};
<div>
<Router history={history}>
<div>
{this.props.isFetching && <Loading />}
<Switch>
<PrivateRoute exact path="/:job?" component={LandingScreen} />
<PrivateRoute exact path="/quiz-setup/:job" component={QuizSetupMain} />
<PrivateRoute exact path="/quiz-questions" component={FetchedQuestionComponent} />
<Route exact path="/login" component={LoginComponent} />
<Route exact path="/*" component={NotFound} something="foo" />
</Switch>
</div>
</Router>
</div>
)
handleLogout = () => {
this.props.logoutUser();
}
Здесь первый, как только я вхожу в систему.Итак, при успешном входе в систему я написал:
history.push('/'); then it redirects to the LandingScreen Component.
Теперь у меня есть один выпадающий список, при изменении которого я добавляю :job
параметр в маршрут, который похож на
* 1009.*
onchange
,
history.push({
pathname: "/" + `${jdId}`
});
Итак, снова выполняется рендеринг компонента LandingScreen
.
Теперь, при нажатии кнопки выхода из системы,
Я хочу перенаправитьиспользовать для страницы входа, которая /login
.
Итак, при выходе из системы, что я делаю,
localStorage.clear();
history.push('/');
, так что при этом он не рендерит LoginComponent, а также делает маршрутне получать изменения, но если я удаляю :job?
из маршрута, который он перенаправляет на вход в систему, я имею в виду визуализацию компонента входа в систему.
Может ли кто-нибудь помочь мне с этим?