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!