Se envolver minhas rotas no componente switch eu ainda precisarei usar o atributo exact?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Se envolver minhas rotas no componente switch eu ainda precisarei usar o atributo exact?
Olá, Delano! Tudo bem?
Sim, é recomendado que você use. O Switch garante que a primeira rota que contenha parte do caminho requisitado seja renderizada, mas isso não significa que a primeira rota é a rota que você realmente quer renderizada.
Com o exact, você garante que a rota retornada possui exatamente o mesmo caminho requisitado.
Usando os dois, você garante que:
No exemplo do instrutor, ao tentar acessar /sobre, o Switch traria apenas uma rota, mas dependendo da ordem, a rota escolhida pelo Switch pode tanto ser a correta, /sobre, quanto a errada / (mesmo que nunca as duas ao mesmo tempo). O código abaixo é um exemplo de quando tentasse acessar /sobre retornaria a rota errada pela falta do exact:
<Router>
<Switch>
<Route path='/'>
<Home />
</Route>
<Route path='/sobre'>
<Sobre />
</Route>
</Switch>
</Router>
Aconteceria isso porque a rota / passaria na condição. Como o Switch escolhe apenas a primeira rota que passar na condição, seria apenas a /. Quando o usuário tentasse acessar /sobre, acabaria na Home.
Espero ter ajudado!