Подтвердить что ты не робот

OnEnter не вызван в React-Router

Хорошо, мне надоело пытаться.
Метод onEnter не работает. Любая идея, почему?

// Authentication "before" filter
function requireAuth(nextState, replace){
  console.log("called"); // => Is not triggered at all 
  if (!isLoggedIn()) {
    replace({
      pathname: '/front'
    })
  }
}

// Render the app
render(
  <Provider store={store}>
      <Router history={history}>
        <App>
          <Switch>
            <Route path="/front" component={Front} />
            <Route path="/home" component={Home} onEnter={requireAuth} />
            <Route exact path="/" component={Home} onEnter={requireAuth} />
            <Route path="*" component={NoMatch} />
          </Switch>
        </App>
      </Router>
  </Provider>,
  document.getElementById("lf-app")

Изменить:

Метод выполняется, когда я вызываю onEnter={requireAuth()}, но, очевидно, это не цель, и я также не буду получать нужные параметры.

4b9b3361

Ответ 1

onEnter больше не существует на react-router-4. Вы должны использовать <Route render={ ... } />, чтобы получить желаемую функциональность. Я полагаю, что Redirect пример имеет ваш конкретный сценарий. Я изменил его ниже, чтобы соответствовать вашим.

<Route exact path="/home" render={() => (
  isLoggedIn() ? (
    <Redirect to="/front"/>
  ) : (
    <Home />
  )
)}/>