Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ Reactにおけるデータリストのレンダリング | 再利用可能なコンポーネントとデータフロー
React入門

bookReactにおけるデータリストのレンダリング

メニューを表示するにはスワイプしてください

現代のウェブアプリケーション開発では、バックエンドから受け取ったデータのコレクションをレンダリングすることが一般的です。これを実現するために、map() メソッドを利用します。map() メソッド内ではコールバック関数を使用し、目的の出力をレンダリングするためにJSXを返します。

どのように動作するかを説明するために、例を見てみましょう。App コンポーネントが toys というプロップ(オブジェクトの配列)を渡します。ToyCard コンポーネントは map() メソッドを利用して、配列内の各おもちゃをレンダリングします。

// Data from backend
const toysData = [
  { id: "id-1", name: "Rainbow Sparkle Unicorn Plush" },
  { id: "id-2", name: "Jungle Adventure Playset" },
  { id: "id-3", name: "Magical Princess Castle Dollhouse" },
  { id: "id-4", name: "RoboBot Transformer Robot" },
  { id: "id-5", name: "SuperBlast Action Figure" },
];

// Child component
const ToyCard = (props) => (
  <ul>
    {props.toys.map((toy) => (
      <li>{toy.name}</li>
    ))}
  </ul>
);

// Parent component
const App = () => (
  <>
    <ToyCard toys={toysData} />
  </>
);

13〜15行目では、map() メソッドの利用が確認できます。これにより、配列内の各アイテムを反復処理し、その値を抽出し、各アイテムのデータに基づいた特定のマークアップを生成できます。

アプリ全体のコード:

しかし、コンソールに注目すると、次の警告が表示されていることがわかります:Each child in a list should have a unique "key" prop.

キー

key は、コレクション内の要素を作成する際に必ず割り当てる必要がある重要な文字列プロパティ。

React はキーを利用して、コレクション内の要素の安定した識別を実現。これらのキーにより、React は変更が発生した際に再レンダリングや再作成が必要な要素を特定し、コレクション全体を再作成することを防止。キーを使用することで、不要な要素の再作成を防ぎ、パフォーマンスの向上につながる。

Note
注意

キーは隣接する要素間で一意である必要がある。また、一定であり、時間とともに変更されないことが重要。

識別子(例えば、バックエンドデータの id 値)を key プロパティとして利用することが一般的に推奨されています。この方法により、React はコレクション内の個々の要素を効果的に識別・管理できます。

前回のアプリを key プロパティを使って修正しましょう:

// Data from backend
const toysData = [
  { id: "id-1", name: "Rainbow Sparkle Unicorn Plush" },
  { id: "id-2", name: "Jungle Adventure Playset" },
  { id: "id-3", name: "Magical Princess Castle Dollhouse" },
  { id: "id-4", name: "RoboBot Transformer Robot" },
  { id: "id-5", name: "SuperBlast Action Figure" },
];

// Child component
const ToyCard = (props) => (
  <ul>
    {props.toys.map((toy) => (
      <li key={toy.id}>{toy.name}</li>
    ))}
  </ul>
);

// Parent component
const App = () => (
  <>
    <ToyCard toys={toysData} />
  </>
);

14行目:key プロパティは、データ配列内で複数回レンダリングされる要素に設定されています。

アプリ全体のコード:

1. React でバックエンドから受け取ったデータのコレクションをレンダリングする際によく使われるメソッドはどれですか?

2. React でコレクション内の要素に key プロパティを割り当てることが重要なのはなぜですか?

3. コレクション内の要素に対して安定した識別子を確保するために、key プロップの値はどのようである必要がありますか?

question mark

React でバックエンドから受け取ったデータのコレクションをレンダリングする際によく使われるメソッドはどれですか?

正しい答えを選んでください

question mark

React でコレクション内の要素に key プロパティを割り当てることが重要なのはなぜですか?

正しい答えを選んでください

question mark

コレクション内の要素に対して安定した識別子を確保するために、key プロップの値はどのようである必要がありますか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 2.  6

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 2.  6
some-alt