Eu gostaria de exibir um title
em <AppBar />
que é de alguma forma passou no da rota atual.
No React Router v4, como seria <AppBar />
possível obter a rota atual passada para o seu title
prop?
<Router basename='/app'>
<main>
<Menu active={menu} close={this.closeMenu} />
<Overlay active={menu} onClick={this.closeMenu} />
<AppBar handleMenuIcon={this.handleMenuIcon} title='Test' />
<Route path='/customers' component={Customers} />
</main>
</Router>
Existe uma maneira de passar um título personalizado a partir de um costume prop
em <Route />
?
reactjs
react-router
react-router-v4
Raphael Rafatpanah
fonte
fonte
Respostas:
Na versão 5.1 do react -router, há um gancho chamado useLocation , que retorna o objeto de localização atual. Isso pode ser útil sempre que você precisar conhecer o URL atual.
fonte
redirect
foi usado. isso lerá o caminho antes do redirecionamentoNo roteador de reação 4, a rota atual está em -
this.props.location.pathname
. Basta obterthis.props
e verificar. Se você ainda não vêlocation.pathname
, deve usar o decoradorwithRouter
.Isso pode ser algo como isto:
fonte
window.location.pathname
Se você estiver usando os modelos do react, onde o final do seu arquivo de reação se parece com o seguinte:
export default SomeComponent
você precisa usar o componente de ordem superior (geralmente chamado de "HOC")withRouter
,.Primeiro, você precisará importar da seguinte
withRouter
maneira:Em seguida, você vai querer usar
withRouter
. Você pode fazer isso alterando a exportação do seu componente. É provável que você queira mudar deexport default ComponentName
paraexport default withRouter(ComponentName)
.Em seguida, você pode obter a rota (e outras informações) dos adereços. Especificamente,
location
,match
, ehistory
. O código para cuspir o nome do caminho seria:Uma boa redação com informações adicionais está disponível aqui: https://reacttraining.com/react-router/core/guides/philosophy
fonte
Aqui está uma solução usando
history
Leia maisdentro do roteador
fonte
this.props....
que são apenas barulho para os nossos ouvidos.Existe um gancho chamado useLocation no react -router v5, não há necessidade de HOC ou outras coisas, é muito sucinto e conveniente.
fonte
Acho que os autores do React Router (v4) acabaram de adicionar isso ao Router HOC para apaziguar certos usuários. No entanto, acredito que a melhor abordagem é usar apenas prop prop e criar um simples componente PropsRoute que passe esses props. Isso é mais fácil de testar, pois você não "conecta" o componente como o Router. Tenha um monte de componentes aninhados envolvidos com o Router e não será divertido. Outro benefício é que você também pode usar esse passe através de quaisquer acessórios que desejar para a Rota. Aqui está o exemplo simples usando render prop. (praticamente o exemplo exato do site https://reacttraining.com/react-router/web/api/Route/render-func ) (src / components / routes / props-route)
use: (aviso para obter os parâmetros de rota (match.params), você pode simplesmente usar este componente e esses serão passados para você)
Observe também que você também pode passar quaisquer adereços extras que desejar dessa maneira
fonte
Tem Con Posidielov disse, a rota atual está presente em
this.props.location.pathname
.Mas se você quiser corresponder a um campo mais específico, como uma chave (ou um nome), use matchPath para encontrar a referência de rota original.
fonte
Adicionar
Em seguida, altere a exportação de componentes
Em seguida, você pode acessar a rota diretamente no próprio componente (sem tocar em mais nada no seu projeto) usando:
Testado em março de 2020 com: "version": "5.1.2"
fonte