Попытка выполнить перенаправление на частный маршрут после успешного входа в систему и получения токена аутентификации из API и сохранения его в sessionStorage. В моем основном компоненте приложения я использую Switch:
<Switch>
<Route exact path='/' component = {Home} />
<Route path='/login' component = {Login} />
<PrivateRoute path='/cpanel' component = {Cpanel} />
</Switch>
Частный маршрут определяется следующим образом:
const PrivateRoute = ({ component: Component, ...rest }) => (
<Route { ...rest } render = {(props) => (
sessionStorage.getItem('authToken') === true
? <Component { ...props } />
: <Redirect to='/login' />
)} />
);
В моем компоненте Login функция handleSubmit выглядит следующим образом:
handleSubmit(event) {
// preventing default form behaviour from submitting..
event.preventDefault();
// extracting form data and resetting form fields..
const form = event.target;
const data = new FormData(form);
form.reset();
// send post request to API..
axios.post(this.state.uri, {
email: data.get('email'),
password: data.get('password')
})
.then((response) => {
// save authorization token in client side..
sessionStorage.setItem('authToken', response.data.id);
this.setState({ token: response.data.id });
console.info('Login successful! Authorization token id: ' + sessionStorage.getItem('authToken'));
this.props.history.push('/cpanel');
}).catch((error) => {
console.info(error);
});
}
Я предполагаю, что это как-то связано с this.props.history.push (), потому что в методе рендеринга моего компонента Login я помещаю этот код перед возвратом JSX:
if (sessionStorage.getItem('authToken')) {
return <Redirect to='cpanel' />
} else {
console.info('Your authorization token is not set..');
}
Я очень ценю любой ответ, так как я пытался решить эту проблему самостоятельно в течение 2 дней. Заранее спасибо! Всем хорошего дня!
Есть новости по этому поводу?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Кстати, я забыл указать характер ошибки: «Превышена максимальная глубина обновления. Это может произойти, когда компонент многократно вызывает setState внутри componentWillUpdate или componentDidUpdate. React ограничивает количество вложенных обновлений для предотвращения бесконечных циклов».