⊗jsrtPmRtNR 27 of 47 menu

React Routerにおけるネストされたルート

このレッスンでは、ネストされたルートについて学びます。前回のレッスンで作成したアプリケーションを起動してください。リンクをクリックすると、商品の個別ページに移動します。 しかし、この表示方法が不便で、商品一覧と商品ページを一目で確認できるように、同じ画面に並べて表示したいと仮定しましょう。それでは、そのように変更してみます。

そのために、main.jsxファイルを開き、商品ページのルートをルートルートの子ルートにする、つまりルートルートに「ネスト」します。 これには、ルートオブジェクトのもう一つのプロパティであるchildrenを使用します。

const router = createBrowserRouter([ { path: '/', element: <Root />, errorElement: <ErrorPage404 />, children: [ { path: 'products/:productId', element: <Product />, }, ], }, ]);

再度リンクをクリックしてみますが、商品一覧の右側には何も表示されません。これは、親ルートに子ルートをどこにレンダリングしたいかを指示していないためです。

親ルート内で子ルートの要素をレンダリングするために、Outletコンポーネントが役立ちます。ライブラリからインポートして、ルートルート用のファイルに追加しましょう。

import { Outlet } from 'react-router-dom';

次に、#productというdivで囲み、ルートルートのレイアウトのnav閉じタグの後に追加します。さらに、この構造全体を#mainという別のdivで囲みます。

return ( <div id="main"> <nav> <a href={`/products/1`}>Product1</a> <a href={`/products/2`}>Product2</a> </nav> <div id="product"> <Outlet /> </div> </div> );

これでリンクをクリックすると、商品一覧と商品ページの両方が表示されるようになります。

次に、index.cssに少しスタイルを追加しましょう。

h1, h2 { margin: 0; } div#main { display: flex; margin: 20px; } div#product { margin-left: 40px; }

前回のレッスンの課題で作成したアプリケーションを使用してください。このレッスンの内容を参考に、学生詳細ページへのルートをルートルートにネストさせてください。

さらに、リンクをクリックしたときに、学生一覧と学生詳細ページの両方が画面に表示されるようにしてください。

日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否