カテゴリ: React 更新日: 2026/01/20

Reactのリストとkeyを完全解説!初心者でもわかるユニークなIDをkeyに使うベストプラクティス

ユニークなIDをkeyに使うベストプラクティス
ユニークなIDをkeyに使うベストプラクティス

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

生徒

「Reactでリストを表示するときに、keyって必ず書かないといけないんですか?」

先生

「はい、Reactではリスト表示のときにkeyはとても大切な役割を持っています。」

生徒

「数字とか名前をそのまま使ってもいいんですか?」

先生

「使えますが、正しい選び方をしないと画面表示がおかしくなることがあります。順番に見ていきましょう。」

1. Reactのリスト表示とkeyの基本

1. Reactのリスト表示とkeyの基本
1. Reactのリスト表示とkeyの基本

Reactでは、複数のデータをまとめて画面に表示したいときに「リスト表示」を使います。 リスト表示とは、同じ形の部品をデータの数だけ並べて表示する仕組みです。 たとえば、買い物リスト、名前の一覧、メニュー表などを思い浮かべてください。

Reactでリストを表示するとき、必ず登場するのが「key属性」です。 keyとは、Reactがそれぞれの表示項目を見分けるための目印のようなものです。 人間でいうと、名札や社員番号のような役割を持っています。

このkeyがあるおかげで、Reactは「どの表示が追加されたのか」「どれが消えたのか」「どれが入れ替わったのか」を正しく判断できます。 そのため、keyの付け方はReactの動作や画面の安定性に大きく影響します。

2. ユニークなIDとは何かをやさしく理解しよう

2. ユニークなIDとは何かをやさしく理解しよう
2. ユニークなIDとは何かをやさしく理解しよう

keyに使う値としてよく出てくる言葉が「ユニークなID」です。 ユニークとは「他と重ならない」という意味で、IDは「識別番号」のことです。 つまり、ユニークなIDとは「一つひとつが必ず違う番号や文字列」を指します。

たとえば、学校の出席番号を考えてみてください。 同じクラスの中で、同じ番号の人が二人いると混乱しますよね。 Reactのkeyも同じで、同じkeyがあるとReactが正しく判断できなくなります。

データベースやAPIから取得したデータには、idという項目が用意されていることが多く、 これが最初からユニークなIDとして設計されています。 Reactでは、このidをkeyに使うのが基本中の基本です。

3. ユニークなIDをkeyに使う基本例

3. ユニークなIDをkeyに使う基本例
3. ユニークなIDをkeyに使う基本例

import React from "react";

function App() {
  const users = [
    { id: 1, name: "たろう" },
    { id: 2, name: "はなこ" },
    { id: 3, name: "じろう" }
  ];

  return (
    <ul>
      {users.map(user => (
        <li key={user.id}>{user.name}</li>
      ))}
    </ul>
  );
}

export default App;
(画面には「たろう」「はなこ」「じろう」とリスト形式で表示されます)

この例では、usersというデータの中にidがあり、そのidをkeyに使っています。 それぞれのidは重ならないため、Reactは安心して画面を管理できます。 これがユニークなIDをkeyに使う最も基本的で安全な書き方です。

4. なぜユニークなIDがベストプラクティスなのか

4. なぜユニークなIDがベストプラクティスなのか
4. なぜユニークなIDがベストプラクティスなのか

ベストプラクティスとは、「多くの人が使っていて、失敗が少ないおすすめの方法」という意味です。 ReactでkeyにユニークなIDを使うことがベストプラクティスと呼ばれるのには理由があります。

Reactは画面を効率よく更新するために、前の画面と次の画面を比べています。 このとき、keyが変わらなければ「同じ要素」と判断します。 ユニークなIDはデータが変わらない限り一定なので、Reactの判断がとても正確になります。

逆に、正しくないkeyを使うと、入力した文字が消えたり、 別の行に移動したりといった不思議な動きが起こることがあります。 初心者ほど原因が分からず混乱しやすいため、最初から正しい方法を知っておくことが大切です。

5. フォーム付きリストでもIDをkeyに使う例

5. フォーム付きリストでもIDをkeyに使う例
5. フォーム付きリストでもIDをkeyに使う例

import React, { useState } from "react";

function App() {
  const [items] = useState([
    { id: "a1", text: "りんご" },
    { id: "b2", text: "みかん" },
    { id: "c3", text: "ぶどう" }
  ]);

  return (
    <div>
      {items.map(item => (
        <div key={item.id}>
          <input type="checkbox" /> {item.text}
        </div>
      ))}
    </div>
  );
}

export default App;
(果物の名前とチェックボックスが縦に並んで表示されます)

入力フォームがある場合でも、ユニークなIDをkeyに使うことで表示が安定します。 チェックを入れた状態が勝手に変わるといったトラブルを防ぐことができます。

6. 自分でIDを作る場合の考え方

6. 自分でIDを作る場合の考え方
6. 自分でIDを作る場合の考え方

データに最初からidがない場合でも、可能であればデータを作る段階でIDを用意しましょう。 文字列と数字を組み合わせたものでも問題ありません。 大切なのは「同じ一覧の中で絶対に重ならないこと」です。

表示の順番や見た目ではなく、データそのものを表す値をkeyにする意識を持つと、 Reactのリスト処理が理解しやすくなります。

カテゴリの一覧へ
新着記事
New1
React
Reactのカスタムフックで依存関係を扱う方法を解説!初心者でもわかる依存関係管理
New2
Next.js
Next.js Client Componentsでフォーム入力を扱う実装パターン完全ガイド!初心者でもわかるNext.jsフォーム処理
New3
React
Fetch APIでPOSTリクエストを送る方法を完全解説!初心者でもわかるReactのデータ送信
New4
React
useEffectでクリーンアップ関数を使う方法をやさしく解説
人気記事
No.1
Java&Spring記事人気No1
React
ReactとTypeScriptの環境構築をやさしく解説!Viteとtsconfigの設定も丁寧に紹介
No.2
Java&Spring記事人気No2
React
ReactでonChangeイベントを使ってフォーム入力値を管理する方法を初心者向けに解説
No.3
Java&Spring記事人気No3
React
Reactのイベントハンドリングのアンチパターンまとめ!初心者でもわかる注意点
No.4
Java&Spring記事人気No4
React
Reactのカスタムフックの作り方を完全ガイド!再利用可能なロジックを切り出す仕組み
No.5
Java&Spring記事人気No5
React
create-react-appでReactプロジェクトを作成する手順を初心者向けに完全解説!
No.6
Java&Spring記事人気No6
React
useEffectでクリーンアップ関数を使う方法をやさしく解説
No.7
Java&Spring記事人気No7
React
ReactでFetch APIのローディング状態を管理する方法|初心者にもわかる解説
No.8
Java&Spring記事人気No8
React
Reactでファイルアップロードを実装する方法を解説!Fetch APIで画像やPDFを送る仕組みを初心者向けに紹介