2017-03-04 34 views
5

私はこの次のコードを持っている:が反応ルータ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> 
) 

私がメインで小道具やArticleViewコンポーネントを介して歴史や試合にアクセスすることができます。しかし、<Header />でアクセスできません。 Headerコンポーネントで履歴オブジェクトを取得する方法はありますか?

答えて

18

これにはwithRouter HOCを使用できます。私は、コンポーネントがの一部である場合withRouterだけうまくいくと思う

あなたのヘッダー・コンポーネントが定義されている場合は、以下のような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) 
+1

。私が間違っているなら、私を訂正してください。ありがとう:) –

+2

コンポーネントがの一部である場合、withRouterを使用する必要はありません。私が混乱しない限り。 –

+0

ちょっと@テイラー、あなたはハハを混同しています。私の

の一部ではありません。それはの中にありますが、ではありません。だから私はそこからその小道具にアクセスすることはできません。 –

関連する問題