如何访问外部的历史对象 在React Router v4中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何访问外部的历史对象 在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组件中的props访问历史记录或匹配。但我无法在<Header />访问它。有没有办法在Header组件中获取历史对象?

答案

你可以使用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)

以上是关于如何访问外部的历史对象 在React Router v4中的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 react-router-dom v6 中的历史对象重定向到特定页面

[react-router] React-Router怎么获取历史对象?

访问 React Router 历史堆栈

React Router DOM 历史对象导致 Typescript 错误

如何在 React Router v5 中推送到历史记录?

如何在 React Router v5 中推送到历史记录?