React Router 4 после выхода из системы управления маршрутом - PullRequest
0 голосов
/ 13 июня 2018

Я новичок, чтобы отреагировать, я работаю над реализацией базового процесса аутентификации с помощью Meteor, я использую React Router V4 для маршрутизации, ниже приведен код моих маршрутов, чтобы получить основную идею:

const routes = (
  <Router history={history}>
    <Switch>
        <Route exact path="/" component={Login}  onEnter={onEnterPublicPage}/>
        <Route exact path='/signup' component={Signup} onEnter={onEnterPublicPage}/>
        <Route exact path='/links' component={Link}/>
          <Route exact path='*' component={NotFound}/>
    </Switch>
   </Router>
);  

Вот базовый поток аутентификации, который я ожидаю:

Экран входа в систему> Главный экран (нажмите выход из системы)> Экран входа в систему

Этот процесс достигается с помощью приведенного ниже кода:

Tracker.autorun(() => {
 const isAuthenticated= !!Meteor.userId();
 console.log('isAuthenticated', isAuthenticated);
   if (isAuthenticated && isUnAuthenticatedPage){
     history.push('/links');
   }
   else if (!isAuthenticated && isAuthenticatedPage){
     history.push('/');
   }
});

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

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

1 Ответ

0 голосов
/ 18 июня 2018

Используйте history.replace() вместо history.push()

Почему?

Когда вы вызываете интерфейс history.push, он добавляет новое состояние вверхняя часть стека истории (чтобы вы могли перейти к предыдущему состоянию истории, нажав кнопку "Назад" в браузере), в то время как history.replace заменит текущее состояние истории новым , которое вы определили.

...