Vue3 v-slot ディレクティブ
v-slotディレクティブは、名前付きスロットまたはスコープ付きスロットを表すために使用され、コンポーネント間のコンテンツ配信に使用されます。
基本説明
v-slotディレクティブは、スロットにコンテンツを提供したり、スロットから渡される props を受け取ったりするために使用されます。これは Vue でコンポーネントのコンテンツ配信を実現する中核的な方法です。
- 省略記法: #
- 期待される型: JavaScript 式(任意、props を受け取る場合のみ必要)
- 用途: 名前付きスロットまたはスコープ付きスロットを表します。
基本的な使い方
1、名前付きスロット
例
<template>
<base-layout>
<template v-slot:header>
<h1>ページタイトル</h1>
</template>
<template v-slot:default>
<p>メインコンテンツ領域</p>
</template>
<template v-slot:footer>
<p>フッター情報</p>
</template>
</base-layout>
</template>
<base-layout>
<template v-slot:header>
<h1>ページタイトル</h1>
</template>
<template v-slot:default>
<p>メインコンテンツ領域</p>
</template>
<template v-slot:footer>
<p>フッター情報</p>
</template>
</base-layout>
</template>
2、省略記法
例
<!-- 等価 -->
<template v-slot:header>タイトル</template>
<template #header>タイトル</template>
<template v-slot:header>タイトル</template>
<template #header>タイトル</template>
3、スコープ付きスロット
スコープ付きスロットを使用すると、子コンポーネントが親コンポーネントにデータを渡すことができます:
例
<!-- 親コンポーネント -->
<template>
<current-user v-slot="slotProps">
<p>ユーザー名: {{ slotProps.user.name }}</p>
</current-user>
</template>
<script>
export default {
components: { CurrentUser }
}
</script>
<!-- 子コンポーネント CurrentUser.vue -->
<template>
<slot :user="currentUser"></slot>
</template>
<script>
export default {
data() {
return {
currentUser: { name: '张三' }
}
}
}
</script>
<template>
<current-user v-slot="slotProps">
<p>ユーザー名: {{ slotProps.user.name }}</p>
</current-user>
</template>
<script>
export default {
components: { CurrentUser }
}
</script>
<!-- 子コンポーネント CurrentUser.vue -->
<template>
<slot :user="currentUser"></slot>
</template>
<script>
export default {
data() {
return {
currentUser: { name: '张三' }
}
}
}
</script>
その他の拡張