key リストの識別キー
最終更新:2026-10-22
key リストの識別キー
key は v-for の識別子です。Vue がノードを正確に再利用 / 再構築できるようにし、リストの追加・削除時の状態の正しさを保証します。
| グループ | ビルトイン |
|---|---|
| 種類 | 特殊属性 |
| スコープ | テンプレート |
| Vue バージョン | 3.0+ |
| SSR 対応 | 対応 |
📝 構文
<li v-for="item in items" :key="item.id">{{ item.name }}</li>
⚙️ 引数
| props | 一意で安定した値(データの id を推奨。インデックスは使わない) |
|---|
▶ 例
以下のコードを編集して結果を確認しましょう:
出力:
Reversing reorders rows without dragging state into the wrong row.
💡 ポイント
⚠️ 注意 インデックスを key にするのは典型的なバグの元です。リストの挿入 / 削除後に Vue がノードを誤って再利用し、入力内容やアニメーションがずれます。
ℹ️ 補足 key は強制的な再構築にも使われます。コンポーネントに変わる値を与えると、再作成がトリガーされます。
💡 ヒント 安定した id を最優先し、id がなければビジネス上の一意なフィールド、最後の手段としてインデックスを使います。
🏷️ 関連ビルトイン
💡 関連ケース
関連ケースは近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q key を書かないとどうなりますか?
A Vue はその場での再利用方針にフォールバックし、警告を出します。単純なリストでは問題なさそうに見えても、追加・削除や並べ替えでバグが出ます。
Q key はグローバルに一意である必要がありますか?
A 同じリスト内で一意であれば十分です。
Q コンポーネントを強制的に再描画できますか?
A できます。変わる値をコンポーネントにバインドすると、変化のたびに破棄されて再作成されます。