Olá Pedro,
Você está utilizando a versão 4.1.1 do react-router, entretanto, a aula foi montada utilizando a versão 3.0.0.
Como ocorreram algumas mudanças entre essas versões, você não vai conseguir usar o mesmo código da aula.
A opção mais prática é remover a sua versão atual do react-router e instalar a mesma utilizada na aula.
Para desinstalar a sua versão atual:
npm uninstall react-router --save
Para instalar a versão 3.0.0 utilizada na aula:
npm install react-router@3.0.0 --save
A outra opção é você continuar usando a versão 4 e adequar o código para essa nova versão.
Eu acabei instalando a versão 4 pra me aventurar e já consegui ajustar algumas coisas do código, segue algumas diferenças:
Ao invés de instalar o react-router, instalei o react-router-dom.
Meu import no index.js ficou assim:
import {BrowserRouter, Switch, Route, Redirect} from 'react-router-dom';
O render do index.js ficou assim:
ReactDOM.render(
(
<BrowserRouter>
<Switch>
<Route exact path="/" component={Login} />
<Route path="/logout" component={Logout} />
<Route exact path="/timeline" render={() => (
isLoggedIn() ? (
<Redirect to="/?msg=Você precisa estar logado para acessar o endereço"/>
) : (
<App />
)
)}/>
</Switch>
</BrowserRouter>
),
document.getElementById('root')
);
Ao invés da função verificaAutenticacao, criei uma função isLoggedIn que é usada no código acima para verificar se deve ser redirecionado para a tela de login ou para o App:
function isLoggedIn() {
return localStorage.getItem('auth-token') === null;
}
Para tratar a mensagem de redirecionamento do Login.js, fiz assim:
constructor(props) {
super(props);
var msg = '';
const queryParams = new URLSearchParams(props.location.search);
const queryMsg = queryParams.get('msg');
if(queryMsg) {
msg = queryMsg;
}
this.state = {msg: msg};
}
Para o push de redirecionamento no Login.js não importei o browserHistory, acabei usando history das props, por exemplo o redirect após a autenticação ficou assim:
this.props.history.push('/timeline');
Obs: Estou na metade do curso e até então esses foram os ajustes que precisei fazer para a versão 4, ainda estou ajustando algumas coisas e provavelmente terão mais...