2017-05-07 18 views
1

以下を実行しようとしても動作しません。リアクタルータv4ネストされたルートとスイッチ

ReactDOM.render(
    <Router> 
    <div className="route-wrapper"> 
     <Switch> 
     <App> 
      <Route exact path="/" component={HomePage} /> 
      <Route path="/user" component={UserPage} /> 
     </App> 
     <Route component={Err404} /> 
     </Switch> 
    </div> 
    </Router>, 
    document.getElementById('main') 
) 

ドキュメントには、スイッチ要素内でルート要素とリダイレクト要素のみが許可されていると記載されているため。アプリケーションでHomePageとUserPageを明示的に折り返したり、エラーページをアプリケーションでラップしたりすることなく、これを動作させるにはどうすればよいですか?

+0

コンポーネントとをラップからあなたを停止していますか? –

+0

Appコンポーネントには、ヘッダー、ナビゲーションバー、およびルートにあるコンテンツが含まれます。私はヘッダーとナビゲーションバーが404ページにあることを望んでいません。 –

+0

私はを使用してアプリケーション部分を表示し、アプリケーション内でホームページとユーザーページの間のルーティングを行うことができます。これはv4のやり方です –

答えて

6

私は「ユニバーサルリアクションアプリ」を開発し始めましたが、サーバーサイドのレンダリングで最初のページの読み込みが行われていましたが、React-Routerが4.0に更新されたばかりの同様の問題に直面しました。あなたは、下記の通り、あなたのアプリケーションに何かを再編検討する必要があります。

ReactDOM.render(
    <Router> 
    <div className="route-wrapper"> 
     <Switch> 
     <Route path="/" component={App} /> 
     <Route component={Err404} /> 
     </Switch> 
    </div> 
    </Router>, 
    document.getElementById('main') 
) 
アプリケーションコンポーネントは、次のようにリファクタリングされ

class App extends React.Component { 
    render() { 
    return <div> 
     <Switch> 
     <Route exact path="/" component={HomePage} /> 
     <Route exact path="/user" component={UserPage} /> 
     </Switch> 
    </div>; 
    } 
} 
+0

この例に関して:Err404コンポーネントに到達することは可能ですか?最初のルートはすべて一致し、Appコンポーネントをロードします。その場合、Err404コンポーネントがロードされますか?後続のスイッチで一致が見つからない場合は検出されません。 – FelixZett

関連する問題