1
resposta

onEnter não está funcionando para redirecionar a página

No index.js o onEnter não está funcionando. O código está como descrito abaixo, e quando a página timeline é acessada, não é redirecionado para a página de login, ele acessa a página timeline normalmente. Poderiam me ajudar com o código?


function verificaAutentificacao(nextState,replace){

    if(localStorage.getItem('auth-token') === null){
        replace('/?msg=Você precisa estar logado para acessar o sistema');
    }
}

ReactDOM.render(
<Router history={browserHistory}>
    <Route path="/" component={Login}/>
    <Route path="/timeline" component={App} onEnter={verificaAutentificacao}/>
</Router>

, document.getElementById('root')
);
1 resposta

Antonio, boa tarde!

onEnter não existe mais no react-router-4. Você deve usar <Route render = {...} /> para obter a funcionalidade desejada. Acredito que o exemplo de redirecionamento tenha seu cenário específico. Eu a modifiquei abaixo para corresponder à sua.

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

Nós recomendamos fazer os novos cursos de React, pois esse está desatualizado e irá sair da plataforma, abaixo os links dos cursos novos:

Curso 1: https://cursos.alura.com.br/course/react-componentes-reutilizaveis 16h36

Curso 2: https://cursos.alura.com.br/course/react-validacao-rotas-api

Espero ter ajudado e bons estudos!