Warning: Each child in a list should have a unique 'key' prop
Reactで配列をレンダリングする際にkey propが不足している警告
概要
Reactで配列をmap()などで展開してレンダリングする際、各要素にユニークなkeyプロパティを指定していない場合に発生する警告です。keyはReactが要素を識別し、効率的に再レンダリングするために必要です。
エラーメッセージ
Warning: Each child in a list should have a unique "key" prop.
Check the render method of `ComponentName`.
原因
- keyの指定忘れ: map()で生成した要素にkeyを付けていない
- 非ユニークなkey: 同じ値のkeyが複数存在する
- インデックスをkeyに使用: 配列の順序が変わる場合に問題
- ネストしたリスト: 内側のリストでkeyを忘れる
解決策
1. ユニークなIDをkeyに使用
| |
2. インデックスは最終手段
| |
3. 複合キーの作成
| |
4. ユニークIDの生成
| |
5. Fragmentでのkey
| |
6. ネストしたリスト
| |
7. コンポーネントの抽出
| |
keyの重要性
| |
よくある間違い
- Math.random()をkeyに使用(毎回変わるため非効率)
- 親コンポーネントではなく子コンポーネント内でkeyを設定
- keyを子コンポーネントのpropsとして使おうとする(keyはpropsに含まれない)
関連エラー
参考リンク
React の他のエラー
この記事は役に立ちましたか?