如何在 React Router v4 中访问 <Route /> 之外的历史对象
How to access history object outside <Route /> in React Router v4
我有以下代码:
import {
BrowserRouter as Router,
Route,
Link
} from 'react-router-dom'
const Routes = () => (
<Router basename="/blog">
<div>
<Header />
<Route exact path="/" component={Main}/>
<Route path="/article/:id" component={ArticleView}/>
</div>
</Router>
)
我可以通过 Main 和 ArticleView 组件中的属性访问历史记录或匹配项。但是我无法在 <Header />
中访问它。有没有办法获取Header组件中的history对象?
您可以为此使用 withRouter HOC。
在您的 Header 组件定义的地方,将导出包装在如下所示的 withRouter 调用中将使您的 Header 组件能够访问匹配、位置和历史记录
import {withRouter} from 'react-router'
class Header extends Component {
static propTypes = {
match: PropTypes.object.isRequired,
location: PropTypes.object.isRequired,
history: PropTypes.object.isRequired
}
render () {
const { match, location, history } = this.props
return <h2>The Header</h2>
}
}
export default withRouter(Header)
我有以下代码:
import {
BrowserRouter as Router,
Route,
Link
} from 'react-router-dom'
const Routes = () => (
<Router basename="/blog">
<div>
<Header />
<Route exact path="/" component={Main}/>
<Route path="/article/:id" component={ArticleView}/>
</div>
</Router>
)
我可以通过 Main 和 ArticleView 组件中的属性访问历史记录或匹配项。但是我无法在 <Header />
中访问它。有没有办法获取Header组件中的history对象?
您可以为此使用 withRouter HOC。
在您的 Header 组件定义的地方,将导出包装在如下所示的 withRouter 调用中将使您的 Header 组件能够访问匹配、位置和历史记录
import {withRouter} from 'react-router'
class Header extends Component {
static propTypes = {
match: PropTypes.object.isRequired,
location: PropTypes.object.isRequired,
history: PropTypes.object.isRequired
}
render () {
const { match, location, history } = this.props
return <h2>The Header</h2>
}
}
export default withRouter(Header)