vue中的插槽slot


vue中的插槽slot

为了让组件具备更强的通用性

子组件

声明插槽的Comp组件

1
2
3
4
5
<div>
<slot></slot> //默认插槽,调用default(),将返回的虚拟节点放到这里
<slot name='slot1'></slot> //具名插槽,调用slot1(),将返回的虚拟节点放到这里
<slot name='slot2' msg='hello world'></slot> //作用域插槽,调用slot2({msg:'hello world'}),将返回的虚拟节点放到这里
</div>

父组件

使用具有插槽的子组件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<Comp>
<p>
default slot
</p>
<template #slot1>
<p>
slot1
</p>
</template>
<template #slot2='slotData'>
<p>
slot2:{{slotData.msg}}
</p>
</template>
</Comp>

插槽向组件Comp传递一个对象,对象里面的属性名就是插槽名

1
2
3
4
5
6
{
default:function(){},
slot1:function(){},
slot2:function(slotData){}
}
//调用这些函数就会返回对应的虚拟节点