(Update) V5.1 & Hooks (erfordert Reaktion> = 16.8)
Sie können verwendet werden useHistory
, useLocation
und useRouteMatch
in der Komponente zu erhalten match
, history
und 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 withRouter
HOC einzuspritzen , um match
, history
und location
in 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 withRouter
HOC einzuspritzen , um router
, params
, location
, routes
in 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 childContextTypes
und 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
}