⊗jsrtPmRtGLDP 36 of 47 menu

React RouterでURLパラメータからローダーデータを取得する方法

前回のレッスンでは、商品ページのデータを取得する関数を作成しました。 ファイルproduct.jsxgetProductをインポートしましょう:

import { getProduct } from '../forStorage';

インポートの後、Product関数の前にloader関数を記述します。 URLパラメータを渡しましょう:

export async function loader({ params }) { const product = await getProduct(params.productId); return { product }; }

また、ローダーで取得したデータを使用するために、 フックuseLoaderDataをインポートします:

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

useLoaderDataを適用し、それに応じて Product関数の先頭にあるproductオブジェクトを作成する行を 次のように置き換えます:

const { product } = useLoaderData();

もちろん、古いproductオブジェクトを削除したので、 マークアップも少し変更します。段落の内容を置き換えます:

<p>Name: {product.name}</p> <p>Cost: {product.cost}</p> <p>Amount: {product.amount}</p>

次に変更します:

<p>Name: {product.name ? product.name : <i>unnamed</i>}</p> <p>Cost: {product.cost ? product.cost : <i>unknown</i>}</p> <p>Amount: {product.amount ? product.amount : <i>unknown</i>}</p>

あとはmain.jsxを開き、 そこにloaderをインポートするだけです。 これをproductLoaderと呼びましょう:

import Product, { loader as productLoader, } from './routes/product';

そして、商品ページのルートオブジェクトのローダーとして指定し、 children内のelementプロパティの後に追加します:

children: [ { path: 'products/:productId', element: <Product />, loader: productLoader, }, ],

以上で、商品ページのデータ読み込みについて説明しました! ただし、今のところ読み込むものは何もありません。 アプリケーションを起動し、商品を追加してリスト内でクリックし、 すべてが機能していることを確認してください。

過去のレッスンの課題で作成したアプリケーションを使用してください。 レッスンの内容を参考に、loaderを実装し、接続し、 学生ページのデータとしてそれらのデータを利用してください。

日本語
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
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否