componentDidMount не вызывается, вызывая бесконечный цикл для защищенных маршрутов в реагирующем приложении - PullRequest
0 голосов
/ 12 февраля 2019

Моя цель - настроить защищенные маршруты в моем приложении реакции.Я следовал различным примерам, похожим на https://reacttraining.com/react-router/web/example/auth-workflow,, означая, что я установил свой собственный маршрут (SecureRoute), который возвращает маршрут, который является либо запрошенным компонентом, либо перенаправлением на страницу входа.

У меня есть функция componentDidMount в проверке App.js, чтобы проверить, вошел ли пользователь в систему - я установил переменную состояния, которая передается в функцию SecureRoute, как показывают примеры.Я передаю от входа в систему, чтобы я мог перенаправить пользователя на страницу, которую он запрашивал - все, как показано.Проблема в том, что componentDidMount в App.js больше не вызывается, поэтому, когда пользователь перенаправляется на запрошенную страницу, переменная состояния устанавливается в false из конструктора, и пользователь снова оказывается на странице входа ...но они на самом деле вошли (мой заголовок показывает, что они есть).

Я пытался передать реквизиты обратно от имени входа через перенаправление, но я не могу получить к ним доступ в функции SecureRoute внутри приложения.

при отображении имени входа:

if (this.state.loginSuccess) {
return(<Redirect to={{ pathname: from.pathname, state: 
{authenticated: true }}} />);
}

В App.js:

<SecureRoute exact path='/Profile' component={Profile} 
authenticated={this.state.loggedin}/>

function SecureRoute({component: Component, authenticated, ...rest}) 
{
    // How do I both check against authenticated var and against the  state from login?
}

Кажется, ни один из примеров не решает эту проблему.Я снова оказался на странице входа или в бесконечном цикле.Я понимаю, что один из ответов на этот вопрос, вероятно, является избыточным ... который я еще не выучил и может быть слишком тяжелым для моего варианта использования.Я очень ценю любую помощь, которую вы можете оказать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...