(Update) V5.1 & Hooks (erfordert Reaktion> = 16.8)
Sie können verwendet werden useHistory, useLocationund useRouteMatchin der Komponente zu erhalten match, historyund location.
const Child = () => {
const location = useLocation();
const history = useHistory();
const match = useRouteMatch("write-the-url-you-want-to-match-here");
return (
<div>{location.pathname}</div>
)
}
export default Child
(Update) V4 & V5
Sie können mit withRouterHOC einzuspritzen , um match, historyund locationin Ihrer Komponente Requisiten.
class Child extends React.Component {
static propTypes = {
match: PropTypes.object.isRequired,
location: PropTypes.object.isRequired,
history: PropTypes.object.isRequired
}
render() {
const { match, location, history } = this.props
return (
<div>{location.pathname}</div>
)
}
}
export default withRouter(Child)
(Update) V3
Sie können mit withRouterHOC einzuspritzen , um router, params, location, routesin der Komponente Requisiten.
class Child extends React.Component {
render() {
const { router, params, location, routes } = this.props
return (
<div>{location.pathname}</div>
)
}
}
export default withRouter(Child)
Ursprüngliche Antwort
Wenn Sie die Requisiten nicht verwenden möchten, können Sie den Kontext wie in der Dokumentation zu React Router beschrieben verwenden
Zuerst müssen Sie Ihr childContextTypesund einrichtengetChildContext
class App extends React.Component{
getChildContext() {
return {
location: this.props.location
}
}
render() {
return <Child/>;
}
}
App.childContextTypes = {
location: React.PropTypes.object
}
In diesem Kontext können Sie dann auf das Standortobjekt in Ihren untergeordneten Komponenten zugreifen
class Child extends React.Component{
render() {
return (
<div>{this.context.location.pathname}</div>
)
}
}
Child.contextTypes = {
location: React.PropTypes.object
}