⊗jsrxPmRDMDO 30 of 57 menu

Reduxスライスからのデータの再利用

前回のレッスンでは、商品追加フォームに 出品者を選択するドロップダウンフィールドを 追加しました。ここで、この情報を アプリケーションの他の複数箇所でも 表示する必要が出てきたと仮定しましょう。 そのために毎回コードを複製するのではなく、 スライスからデータを取得し、 必要な場所で表示するための 独立したコンポーネントを作成します。

商品アプリケーションを開きましょう。 次に、productsフォルダ内に 新しいファイルSellerOfProd.jsxを作成します。 まず、必要な商品のスライスを取得するために フックuseSelectorをインポートします。

import { useSelector } from 'react-redux'

次に、新しく作成するコンポーネントの props経由で渡される販売者のIDを使用して、 storeから必要な商品を取得します。

export const SellerOfProd = ({ sellerId }) => { const seller = useSelector((state) => state.sellers.find((seller) => seller.id === sellerId) ) }

販売者が存在する場合はその名前を返し、 存在しない場合は'unknown'を返します。

return <span>by {seller ? seller.name : 'unknown'}</span>

では、新しく作成したコンポーネントを ProductsList.jsxにインポートし、 ProductsList関数内の商品名タイトルの直後に 挿入しましょう。見ての通り、propsとしてIDを渡しています。

<SellerOfProd sellerId={product.seller} />

これで、アプリケーションを起動し、 新しい商品を追加してリストから見つけると、 販売者情報が表示され、 アプリ起動時に自動追加された商品には 'unknown'が表示されるはずです。

余談ですが、VS Codeのeslintが sellerIdについて警告を出し、 アプリケーションが動作する場合は、 今はそれを無視するか、 アプリの.eslintrc.cjsファイルを開いて rules"react/prop-types": "off"を 追加することができます。

当然、商品ページにも販売者情報を 追加したいでしょう。 そのためには、ProductPageのマークアップ内の 商品名タイトルの後に同じ行を挿入し、 すべてが機能していることを確認します。

<SellerOfProd sellerId={product.seller} />

学生管理アプリケーションを開いてください。 レッスンの内容を学び、studentsフォルダ内に コンポーネントTeacherForStudent用のファイルを作成します。 このコンポーネントは、教師の氏名と その横に括弧で囲んだ担当科目を返すようにしてください。 必要な教師は、フックuseSelectorを使用して探します。 その学生に対応する教師がいない場合は、'anonym'を表示してください。

前の課題で作成したコンポーネントを使用して、 学生リストページの各学生に対して 教師データを表示してください。

前の課題と同じことを、 個別の学生ページに対して行ってください。

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