2017-02-15 15 views
27

Chciałbym wyświetlić title w <AppBar />, który jest w jakiś sposób przekazywany z bieżącej trasy.React Router v4 - Jak uzyskać aktualną trasę?

W React Router v4, w jaki sposób <AppBar /> byłaby w stanie uzyskać aktualną trasę przekazaną do jej wniosku o numer title?

<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> 

Czy istnieje sposób, aby zdać niestandardowy tytuł od zwyczaju prop na <Route />?

+0

Możliwy duplikat [Jak zdobyć aktualną trasę w routerze reagują-2.0.0-RC5] (https://stackoverflow.com/questions/35031911/how -to-get-current-route-in-react-router-2-0-0-rc5) –

Odpowiedz

45

W trybie 4 routera aktualna trasa jest w - this.props.location.pathname. Po prostu uzyskaj this.props i sprawdź. Jeśli nadal nie widzisz location.pathname, powinieneś użyć dekoratora withRouter.

Może to wyglądać mniej więcej tak:

import {withRouter} from 'react-router-dom'; 
    ... 

    const SomeComponent = withRouter(props => <MyComponent {...props}/>); 

    class MyComponent extends React.Component { 
     ... 
     SomeMethod() { 
      const {pathname} = this.props.location; 
      ... 
     } 
     ... 

    } 
+5

należy pamiętać, że nie zawsze jest to prawdą: z re-router 4, jeśli twój komponent jest renderowany na wyższym poziomie zagnieżdżone trasy (które rozszerzają ścieżkę później) nazwa.path.pathname w usłudze WithRouter będzie inna niż 'window.location.path' – maioman

Powiązane problemy