Se envolver minhas rotas no componente switch eu ainda precisarei usar o atributo exact?
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!