⊗jsrtPmRtDER 38 of 47 menu

React Routerにおけるデータ編集のためのルート作成

前回のレッスンでは、個別のReactコンポーネント EditProduct内に編集用フォームを作成しました。

では、インポートの直後、関数 EditProductの前に、 新しいルート用のローダー関数を書きましょう。 この関数は product.jsx のものと同じになります。 関数にはURLパラメータが渡され、 その後、id に基づいて製品を取得します:

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

getProductforStorage.js からインポートします:

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

次に、main.jsx を開き、 作成したコンポーネント EditProduct とローダーをインポートします:

import EditProduct, { loader as editProductLoader } from './routes/edit';

その後、製品用ルートの直後に編集用ルートオブジェクトを 配列 children に追加します:

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

では、アプリケーションを起動し、 製品を作成し、それをクリックしてから 編集ボタンをクリックすると、フォームが表示されます。

ただし、編集前にフォームのフィールドに現在のデータが 読み込まれるようにする必要があります。 そのため、edit.jsx にフック useLoaderData をインポートします:

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

そして、このフックを EditProduct 関数内で使用して ローダーからデータを取得します。 コマンド return の前に追加します:

const { product } = useLoaderData();

次に、各入力タグに、 対応する入力フィールドの初期値を設定する 属性 defaultValue を追加します。 例えば、最初の入力フィールドは次のようになります:

<input placeholder="name" type="text" name="name" defaultValue={product.name} />

残りの2つの入力フィールドの値は、 それぞれ 'product.cost''product.amount' になります。 ただし、現時点ではフォームにデータはありません。

これまでのレッスンの課題で作成したアプリケーションを使用してください。 このレッスンの内容を参考にして、 学生データ編集用ルートのための関数 loaderedit.jsx 内に作成してください。

配列 children に編集用ルートオブジェクトを追加してください。

関数 EditStudent に、このレッスンで説明した必要なコードを追加してください。

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