カテゴリ: 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のフォーム入力を再利用しよう!初心者でもわかるフィールドコンポーネント化の考え方
New2
React
Reactでできること一覧!初心者でもわかるWebアプリ・スマホアプリ・PWAの活用方法
New3
React
React.jsが人気な理由!VueやAngularとの違いを初心者向けに徹底比較
New4
Next.js
Next.js×StorybookでUI開発環境を整える方法!初心者でもわかるNext.jsの環境構築
人気記事
No.1
Java&Spring記事人気No1
React
Reactでキーボードイベントを活用する方法!onKeyDown, onKeyUp, onKeyPressを初心者向けに解説
No.2
Java&Spring記事人気No2
React
ReactのPresentational Componentを完全ガイド!初心者でもわかるStateを持たないコンポーネントの特徴
No.3
Java&Spring記事人気No3
React
Reactでフォーカスイベントを制御する方法!onFocusとonBlurを初心者向けに解説
No.4
Java&Spring記事人気No4
React
ViteでReact開発環境を構築する手順を完全ガイド!初心者でもできるReactの環境構築
No.5
Java&Spring記事人気No5
React
Reactとは?初心者でもわかるReact.jsの基本概念と特徴をやさしく解説
No.6
Java&Spring記事人気No6
Next.js
Next.js Server Componentsのメリット・デメリットを完全解説!初心者でもわかるNext.jsの基本
No.7
Java&Spring記事人気No7
React
Reactのカードコンポーネントを汎用的に設計する方法!初心者でもわかる再利用の考え方
No.8
Java&Spring記事人気No8
React
ReactとTypeScriptの環境構築をやさしく解説!Viteとtsconfigの設定も丁寧に紹介