2017-06-22 3 views
1

反応ルータのWebサイトhttps://reacttraining.com/react-routerからドキュメントを検索しようとしていますが、ネストされたルートを4.1.1で動作させるソリューションは見つからないようです。ルータに反応の古いバージョンではたとえば、あなたがそうのような巣のルートのことができるようになりますReact Router 4.1.1インポートなしで他のすべてのコンポーネントにヘッダコンポーネントを追加

<Router history={history}> 
    <Route exact path="/" component={App}> 
     <Route path="/cards" component={Example} /> 
    </Route> 
</Router> 

これは{this.props.children}を使用し、それが簡単に静的コンポーネントを持つように作られた、このようなナビゲーションバーが存在するとして、すべてのコンポーネントでインポートする必要はありません。

class App extends Component { 
    render() { 
     return (
      <div> 
       <Header/> 
        <main>{ this.props.children }</main> 
       <Footer/> 
      </div> 
     ); 
    } 
} 

バージョン4.1.1と同様の動作をするにはどうすればよいですか。私は、コンポーネント内のヘッダコンポーネントを常にインポートしたくありません。

私は現時点で使用していますが、私がしようとしていることを達成していないようです。 V4で

<Router history={history}> 
     <Switch> 
      <Route exact path="/" component={App}> 
       <Route path="/cards" component={Example} /> 
      </Route> 
     </Switch> 
    </Router> 
+0

[反応ルータv4でネストされたルートを使用する]の可能な複製(https://stackoverflow.com/questions/44452858/use-nested-routes-in-react-router-v4) –

答えて

1

<Route />は他と同様に普通の構成要素であるので、それは実際にははるかに簡単です。 props.childrenを使用する必要はなく、一致するコンポーネントをレンダリングする必要がある場所にルートを正確に配置することができます。以下は、あなたのv3の例に相当します:

<Router> 
    <div> 
    <Header /> 
    <main> 
     <Route exact path="/" component={HomePage} /> 
     <Route path="/cards" component={Example} /> 
    </main> 
    <Footer /> 
    </div> 
</Router> 

"index"パスを含む回答が更新されました。

+0

これを置く必要がありますRoutesファイルの中に、通常、すべての私のルートを含んでいるか、 "Example"コンポーネントか "HomePage"コンポーネントの内部にあるファイルですか? – henhen

+1

v3とv4はこの点で異なります。 v4は本当にルートファイルという概念を持っていません。ルートファイルからあなたの心を解放して、ルートがどこに配置されていても、パスが一致する限りコンポーネントがロードされる場所を覚えておいてください。更新された回答 – azium

+0

。 – azium

関連する問題