2016-04-24 26 views
0

以下の(本当に単純な)ルート構造の作成方法は混乱します。リアクタのルータとネストされたルート

私はログインコンポーネントのトップレベルのルートを持っているアプリがあります。

enter image description here

とアプリ自体の別のトップレベルのルート(のホーム・コンポーネントを呼びましょう):

enter image description here

ホームコンポーネントには、ヘッダー、サイドバー、および子ビューのメインスペースがあります。

ログインコンポーネントは、/loginパスに表示する必要があります。それは十分簡単です。しかし、私が混乱しているのは、/のパスに、特定の子コンポーネントを持つホームコンポーネントを表示するようにしたいということです(これを「ようこそ」と呼びましょう)。また、私が考えることができる他のルートのほとんどは、子コンポーネントをホームコンポーネント内にレンダリングする必要があります。だから、

、繰り返しに:/

パス/fooはそれ

内部Fooの成分とホームコンポーネントを描画することの内側にようこそコンポーネントとホームコンポーネントを描画する

パスを...

パス/loginは、ログインコンポーネントをレンダリングします

私は考えている構造が次のように感じます。

<Route path='/' component={App}> 
    <IndexRoute component={Home}> 
     <IndexRoute component={Welcome}> 
     <Route path='foo' component={Foo}/> 
    </IndexRoute> 
    <Route path='login' component={Login}/> 
    </Route> 

これは明らかに間違っています。このルーティング構造を実装する正しい方法は何でしょうか?

+0

Welcomeコンポーネントの中にログインコンポーネントがあるように思えます。ウェルカムコンポーネントの内部にレンダリング機能を作成して、ログイン済みかどうかに応じてログインコンポーネントまたはウェルカムコンポーネントをレンダリングします。 –

答えて

1

これはおそらく良い解決策です。試してみてください。

<Route component={App}> 
    <Route path="/" component={Home}> 
    <IndexRoute component={Welcome}/> 
    <Route path="/foo" component={Foo}/> 
    </Route> 
    <Route path="/login" component={Login}/> 
</Route> 
+0

よろしく!それは完璧に動作します!解決していただきありがとうございます。 – azangru

関連する問題