v-slot (#) スロットコンテンツディレクティブ
最終更新:2026-10-22
v-slot (#) スロットコンテンツディレクティブ
v-slot はスロットの内容を指定します。省略記法は # です。テンプレートの断片を子コンポーネントの名前付きスロットやスコープ付きスロットに渡します。
| グループ | ディレクティブ |
|---|---|
| 種類 | ディレクティブ |
| スコープ | テンプレート |
| Vue バージョン | 3.0+ |
| SSR 対応 | 対応 |
📝 構文
<template v-slot:header>...</template>
<template #default="{ item }">...</template>
<Child v-slot="{ data }">
⚙️ 引数
| expression | スロット名(省略時はデフォルトスロット)。スコープ付きスロットでは子コンポーネントから渡されたデータを分割代入できます |
|---|
戻り値:ディレクティブ。戻り値なし
▶ 例
以下のコードを編集して結果を確認しましょう:
出力:
The page shows a bold 'Custom header' — parent content replaced the slot default.
💡 ポイント
💡 ヒント # は v-slot: の省略記法で、#header は v-slot:header と等価です。
⚠️ 注意 v-slot は またはコンポーネントタグにしか使えず、普通の要素には置けません。
ℹ️ 補足 スコープ付きスロットは親コンポーネントに子のデータを渡します(#default="{ item }")。リスト表示のカスタマイズに不可欠な仕組みです。
🏷️ 関連ディレクティブ
💡 関連ケース
関連ケースは近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q # と v-slot: は同じですか?
A 完全に等価です。# は公式の省略記法で、v-slot に引数を付けない場合はデフォルトスロットを表します。
Q スコープ付きスロットとは何ですか?
A 子コンポーネントが slot タグ経由でデータを親のコンテンツフラグメントに渡す仕組みです(例:#default="{ item }")。リストコンポーネントのカスタマイズの核心です。
Q v-slot は普通の要素に置けますか?
A 置けません。<template> またはコンポーネントタグにのみ使えます。これが最もよくあるエラーの原因です。