Alguém pode explicar a diferença entre
<Route exact path="/" component={Home} />
e
<Route path="/" component={Home} />
Eu não sei o significado de 'exato'
Alguém pode explicar a diferença entre
<Route exact path="/" component={Home} />
e
<Route path="/" component={Home} />
Eu não sei o significado de 'exato'
Respostas:
Neste exemplo, nada realmente. O
exact
parâmetro entra em ação quando você tem vários caminhos com nomes semelhantes:Por exemplo, imagine que tivéssemos um
Users
componente que exibisse uma lista de usuários. Também temos umCreateUser
componente usado para criar usuários. O URL paraCreateUsers
deve ser aninhado emUsers
. Portanto, nossa configuração pode ser algo assim:Agora, o problema aqui, quando formos ao
http://app.com/users
roteador, percorrerá todas as nossas rotas definidas e retornará a PRIMEIRA correspondência que encontrar. Portanto, nesse caso, ele encontraria aUsers
rota primeiro e depois a retornaria. Tudo bom.Mas, se formos
http://app.com/users/create
, ele percorrerá novamente todas as rotas definidas e retornará a PRIMEIRA correspondência encontrada. O roteador React faz uma correspondência parcial, correspondendo/users
parcialmente/users/create
, para que retornasse incorretamente aUsers
rota novamente!O
exact
parâmetro desativa a correspondência parcial para uma rota e garante que ela só retorne a rota se o caminho for uma correspondência EXATA para o URL atual.Portanto, neste caso, devemos adicionar
exact
à nossaUsers
rota para que ela corresponda apenas em/users
:Os documentos explicam
exact
em detalhes e dão outros exemplos.fonte
exact
deve ser o padrão na minha opinião/admin//users
no componente Admin e/admin/users/create
no componente Raiz ??? Atualmente, estou com essa situação e aexact
solução típica não funciona corretamente.Em resumo, se você tiver várias rotas definidas para o roteamento do seu aplicativo, inclua um
Switch
componente como este;Então você deve colocar a
exact
palavra-chave na Rota, cujo caminho também é incluído no caminho de outra Rota. Por exemplo, o caminho inicial/
é incluído em todos os caminhos, portanto, é necessário ter umaexact
palavra-chave para diferenciá-lo de outros caminhos que começam com/
. O motivo também é semelhante ao/functions
caminho. Se você quiser usar outro caminho de rota como/functions-detail
ou/functions/open-door
que inclua/functions
nele, será necessário usá-loexact
para a/functions
rota.fonte
Dê uma olhada aqui: https://reacttraining.com/react-router/core/api/Route/exact-bool
exato: bool
Quando verdadeiro, corresponderá apenas se o caminho corresponder
location.pathname
exatamente.fonte
A resposta mais curta é
Por favor, tente isso.
fonte
exact
atributo / suporte e, portanto, certamente não é uma "resposta". Você deve tentar resolver a questão que está sendo efetivamente perguntada, em vez de dar uma solução para um problema que você não tem certeza de que o OP realmente possui.