私はこの次のコードを持っています:
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 />
ではアクセスできません。ヘッダーコンポーネントで履歴オブジェクトを取得する方法はありますか?
これには withRouter HOCを使用できます。
ヘッダーコンポーネントが定義されている場合、以下のようにwithRouter呼び出しでエクスポートをラップすると、ヘッダーコンポーネントに一致、場所、履歴へのアクセス権が与えられます。
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)