- 父级组件中使用
<A> </A>
并且不提供任何插槽内容时,子组件中 <slot></slot>
标签中的内容当作默认内容展示。 - v-slot 只能添加在
<template
(一种情况除外,当被提供的内容只有默认插槽时,组件的标签才可以被当作插槽的模板来使用。这样我们就可以把 v-slot 直接用在组件上。 - 缩写,
v-slot:
替换为字符 #。例如 v-slot:header 可以被重写为 #header。 - 默认插槽的缩写语法不能和具名插槽混用,因为它会导致作用域不明确。
- 多个插槽,要始终为所有的插槽使用完整的基于
<template
匿名插槽
父组件:
<A>
这是xxxxx数据
这是yyyyy数据
</A>
子组件:
<header>
<div>头部</div>
<slot></slot>
</header>
<footer>
<div>底部</div>
<slot></slot>
</footer>
具名插槽
父组件:
<A>
<template v-slot:xxx>
这是xxxxx数据
</template>
<template v-slot:yyy>
这是yyyyy数据
</template>
</A>
***简写:<template #xxx>
子组件:
<header>
<div>头部</div>
<slot name='xxx'></slot>
<slot name='yyy'></slot>
</header>
作用域插槽
- 绑定在
<slot >
元素上的 attribute 被称为插槽 prop。现在在父级作用域中,我们可以使用带值的 v-slot 来定义我们提供的插槽 prop 的名字,当然也可以直接解构,以下我直接使用解构。 - 使用解构时,可以重新命名,例如将 data 重命名为 item:
父组件:
<template v-slot='{data}'>
{{ data.name }} --> {{ data.age }}
</template>
简写:<template #default='{data}'>
子组件:
<div v-for='item in list' :key='item.id'>
<slot :data='item'></slot>
</div>
<script setup>
const list = ref([
{name:"张三",age:"21"},
{name:"李四",age:"22"},
{name:"王五",age:"23"},
])
</script>
动态插槽
父组件:标签:slot,name,作用域,插槽,age,vue3,组件 From: https://blog.51cto.com/u_15885506/6085462
<template #[xxx]>
这是xxxxx数据
</template>
<script setup>
let xxx = ref('xxx');
</script>