Boa noite a todos, hoje venho compartilhar uma dica muito massa para quem está aprendendo sobre rotas e roteamento no REACT JS...
Existe uma lib para lidar com isso dentro do React, o famoso REACT ROUTER DOM, porém o intuito desse post é dar uma dica sobre uma coisa que acontece muito com quem está começando, que é quando implementamos as rotas da nossa aplicação da seguinte forma:
import React from 'react'
import { BrowseRouter, Switch, Route } from 'react-router-dom';
import Main from './pages/Main';
import Repository from './pages/Repository';
export default function Routes() {
return (
<BrowseRouter>
<Switch>
<Route path="/" component={Main} />
<Route path="/repository" component={Repository} />
</Switch>
</BrowseRouter>
);
}
O grande problema do código acima que muita gente que está começando inclusive eu mesmo quando comecei me deparei com o problema é que mesmo chamando a rota /repository o componente renderizado em tela é o componente Main. Isso acontece pois o react-router-dom não procura por uma igualdade entre o path que colocamos dentro do componente Route e a URL que foi digitada no navegador, ele procura saber se a URL digitada começa com o path em que foi atribuido ao componente Route, ou seja se o path dentro do componente começa com / ele sempre irá renderizar o Main, para resolvermos isso é simples, basta passarmos uma flag dentro do componente chamada exact, assim ele vai comparar se a URL é exatamente identica ao path, segue o código de exemplo:
import React from 'react'
import { BrowseRouter, Switch, Route } from 'react-router-dom';
import Main from './pages/Main';
import Repository from './pages/Repository';
export default function Routes() {
return (
<BrowseRouter>
<Switch>
<Route path="/" exact component={Main} />
<Route path="/repository" component={Repository} />
</Switch>
</BrowseRouter>
);
}
Assim o roteamento da sua aplicação funcionará da meneira correta!!!
Espero ter ajudado de alguma forma, grande abreço DEV!!!
Top comments (0)