Reactのリストとキーを完全整理!初心者でも失敗しないベストプラクティスまとめ
生徒
「Reactでリスト表示はできるようになりましたが、キーって毎回必要なんですか?」
先生
「はい、リスト表示ではキーの付け方がとても大切です」
生徒
「適当に番号を付けても動くように見えるんですが…」
先生
「実はそれがトラブルの原因になることもあります。順番に整理して学びましょう」
1. Reactのリスト表示をおさらい
Reactでは、 配列のデータを 画面に並べるときに リストレンダリングを使います。
配列とは、 いくつかの値を まとめて管理する箱のようなものです。
Reactでは mapという仕組みを使い、 配列の中身を 一つずつ取り出して 表示します。
2. keyとは何かを超やさしく理解する
keyとは、 リストの各要素に付ける 目印のことです。
例えるなら、 ロッカーの番号や 名札のような存在です。
Reactは、 どの要素が どれなのかを keyで判断しています。
3. keyを付けないとどうなるか
keyを付けないと、 Reactは 要素の変化を 正確に判断できません。
その結果、 表示が崩れたり、 意図しない動作が 起こることがあります。
小さなアプリでは 問題が見えなくても、 後から困る原因になります。
4. 正しいkeyの基本ルール
keyには、 その要素を 一意に判別できる値を 使う必要があります。
一意とは、 他と被らない、 その要素だけの 印という意味です。
データに idがある場合は、 それを使うのが 最も安全です。
5. 良い例のリストとkey
function App() {
const users = [
{ id: 1, name: "たろう" },
{ id: 2, name: "はなこ" }
];
return (
<ul>
{users.map(user => (
<li key={user.id}>{user.name}</li>
))}
</ul>
);
}
6. indexをkeyに使うのはなぜ注意が必要か
indexとは、 配列の順番番号です。
一見便利ですが、 並び替えや 削除があると、 Reactが 別の要素だと 勘違いすることがあります。
表示だけでなく、 入力内容が 入れ替わるなどの 問題が起こります。
7. indexを使ってもよいケース
データが 完全に固定で、 並び替えや 追加削除が 起こらない場合は、 indexでも 問題になりにくいです。
ただし、 初心者のうちは できるだけ 一意な値を 用意する意識が 大切です。
8. 状態管理とkeyの関係
リストと 状態管理を 組み合わせると、 keyの重要性は さらに高まります。
Reactは 状態の変化を keyを基準に 判断しているため、 間違ったkeyは 状態のズレを 引き起こします。
9. 状態を変更するリストの例
import React, { useState } from "react";
function App() {
const [tasks, setTasks] = useState([
{ id: 1, text: "そうじ" },
{ id: 2, text: "かいもの" }
]);
return (
<ul>
{tasks.map(task => (
<li key={task.id}>{task.text}</li>
))}
</ul>
);
}
export default App;
10. よくある間違いと対策
同じkeyを 複数の要素に 使うのは よくある失敗です。
また、 毎回変わる値を keyにすると、 Reactが 毎回作り直してしまいます。
安定して変わらない値を keyにすることが 基本ルールです。
11. 初心者が覚えておきたいベストプラクティス
リストには必ずkeyを付ける、 keyは一意で安定した値を使う、 indexは慎重に使う。
この三つを 意識するだけで、 Reactのリスト表示は かなり安全になります。