カテゴリ: React 更新日: 2026/02/03

Reactのリストとキーを完全理解!リストレンダリングと状態管理の組み合わせ入門

リストレンダリングと状態管理の組み合わせ
リストレンダリングと状態管理の組み合わせ

先生と生徒の会話形式で理解しよう

生徒

「Reactでリストを表示するのは分かってきましたが、ボタンを押して中身を変えるときはどうするんですか?」

先生

「その場合は、リスト表示と状態管理を組み合わせて考えます」

生徒

「状態管理って難しそうです…」

先生

「仕組みを一つずつ見ていけば、身近な操作と同じだと分かりますよ」

1. リストレンダリングと状態管理とは

1. リストレンダリングと状態管理とは
1. リストレンダリングと状態管理とは

Reactで画面に複数のデータを 並べて表示することを リストレンダリングと呼びます。

一方で、 画面の内容を記憶して 変化させる仕組みが 状態管理です。

状態とは、 今どんなデータを 表示しているかを Reactが覚えている メモのようなものです。

2. 状態を使わないリスト表示の基本

2. 状態を使わないリスト表示の基本
2. 状態を使わないリスト表示の基本

まずは、 状態を使わない シンプルな リスト表示を見ます。


function App() {
  const fruits = ["りんご", "みかん", "バナナ"];

  return (
    <ul>
      {fruits.map(fruit => (
        <li key={fruit}>{fruit}</li>
      ))}
    </ul>
  );
}
(画面に果物の名前が一覧で表示されます)

この方法は 表示するだけなら 十分ですが、 中身を変えることは できません。

3. 状態管理をイメージで理解する

3. 状態管理をイメージで理解する
3. 状態管理をイメージで理解する

状態管理は、 ホワイトボードに 書いた内容を 消したり書き直したり するイメージです。

書き換えた瞬間に、 それを見ている人全員に 新しい内容が 見えるようになります。

Reactでは、 useStateという仕組みで この役割を実現します。

4. 状態を使ってリストを表示する

4. 状態を使ってリストを表示する
4. 状態を使ってリストを表示する

次に、 状態として リストを管理する 例を見てみます。


import React, { useState } from "react";

function App() {
  const [items, setItems] = useState(["ねこ", "いぬ"]);

  return (
    <ul>
      {items.map(item => (
        <li key={item}>{item}</li>
      ))}
    </ul>
  );
}

export default App;
(画面に「ねこ」「いぬ」が表示されます)

この場合、 リストの中身は 状態として Reactが覚えています。

5. ボタン操作でリストを変更する

5. ボタン操作でリストを変更する
5. ボタン操作でリストを変更する

状態管理の強みは、 ユーザーの操作で 画面が変わることです。

ボタンを押して リストに データを追加する 例を見ます。


import React, { useState } from "react";

function App() {
  const [items, setItems] = useState(["パン", "ごはん"]);

  const addItem = () => {
    setItems([...items, "めん"]);
  };

  return (
    <div>
      <button onClick={addItem}>追加</button>
      <ul>
        {items.map(item => (
          <li key={item}>{item}</li>
        ))}
      </ul>
    </div>
  );
}

export default App;
(ボタンを押すとリストに「めん」が追加されます)

6. keyが重要になる理由

6. keyが重要になる理由
6. keyが重要になる理由

リストと状態管理を 組み合わせると、 表示内容が 頻繁に変わります。

そのとき、 Reactがどの要素が どれなのかを 判断するために keyを使います。

keyは、 名札のような役割を持ち、 要素の入れ替えや追加を 正しく処理するために 欠かせません。

7. 状態管理とリスト操作の注意点

7. 状態管理とリスト操作の注意点
7. 状態管理とリスト操作の注意点

状態の配列は、 直接書き換えず、 新しい配列を 作って更新します。

これは、 Reactが変化を 正しく検知するために 必要な考え方です。

コピーして追加する、 という意識を持つと 安定した動作になります。

8. 初心者が最初に理解したいポイント

8. 初心者が最初に理解したいポイント
8. 初心者が最初に理解したいポイント

リスト表示は 配列を並べること、 状態管理は 画面の記憶だと 考えると分かりやすいです。

この二つを 組み合わせることで、 動きのある 画面を作れるようになります。

カテゴリの一覧へ
新着記事
New1
React
Reactプロジェクトのバージョン管理|package.jsonの読み方を初心者向けに徹底解説
New2
Next.js
Next.jsのServer ComponentsとClient Componentsの違いを完全ガイド!初心者でもわかるNext.jsの基本
New3
React
ReactでFetch APIのレスポンスをキャッシュする方法を解説!初心者向けにやさしく丁寧に紹介
New4
React
ReactのcomponentDidMountとuseEffectの違いを徹底解説!初心者でもわかるReactライフサイクルの基本
人気記事
No.1
Java&Spring記事人気No1
React
ViteでReact開発環境を構築する手順を完全ガイド!初心者でもできるReactの環境構築
No.2
Java&Spring記事人気No2
Next.js
Next.jsのappディレクトリの役割を完全解説!初心者でもわかるApp Router入門
No.3
Java&Spring記事人気No3
React
ReactのPropsを使ってコンポーネントの表示を動的に切り替える方法を解説!初心者でもわかるReact入門
No.4
Java&Spring記事人気No4
React
ReactとTypeScriptの環境構築をやさしく解説!Viteとtsconfigの設定も丁寧に紹介
No.5
Java&Spring記事人気No5
React
ReactのuseStateとuseEffectでよくあるエラーと解決方法ガイド!初心者でもわかるReactフック
No.6
Java&Spring記事人気No6
React
ReactのJSXとJavaScriptの違いを完全ガイド!初心者でもわかるReactのJSX入門
No.7
Java&Spring記事人気No7
React
useEffectでクリーンアップ関数を使う方法をやさしく解説
No.8
Java&Spring記事人気No8
Next.js
Next.js App Router入門!App RouterとPages Routerの根本的な違いを初心者向けに徹底解説