Vue的slot
这个slot的意思就是插槽,具体的用法就是当有些信息或者有些节点需要由父节点来决定时,用到。相当于,父亲的一些基因,传递了给孩子。看看例子
先看看这种情况,在以下的情况下,在父节点中,写的任何内容,都不会被展示,因为整个子节点会直接替换了父节点中定义的子节点接口。意思就是说,在父节点中<child></child>里的内容会全部抹掉,完全被child组件中的<div>I am children</div>替换掉
father.vue
<template>
<div>
<child>father say hi to you</child>
</div>
</template>
<script>
import child from './child.vue'
export default{
data(){
return {
}
},
components:{
child,
}
}
</script>
child.vue
<template>
<div>
I am children
</div>
</template>
<script>
export default{
data(){
return {
}
},
}
</script>
渲染后的结果为
<div>
<div>I am children</div>
</div>
在这种情况,如果你想把父组件中的内容带到子子组件中,怎么办呢?就需要用到slot了,他分为两种形式,一种是单插槽,一种的多插槽,先看看单插槽
单插槽
先在子组件中定义一个插槽,然后在父组件(father.vue代码不需要作任何修改)中写的任何内容全部都会塞到这个slot节点当中,如下面代码,和最终渲染结果
child.vue
<template>
<div>
<!--在这里定义了一个插槽-->
<slot></slot>
I am children
</div>
</template>
<script>
export default{
data(){
return {
}
},
}
</script>
最终渲染结果
<div>
father say hi to you
<div>I am children</div>
</div>
多插槽
在某种情况,不单单只插一个内容,如果需要插入多个,就需要用到以下的写法
child.vue
<template>
<div>
<!--在这里定义了多个插槽-->
<slot name="slot_1"></slot>
<slot name="slot_2"></slot>
I am children
</div>
</template>
<script>
export default{
data(){
return {
}
},
}
</script>
father.vue
<template>
<div>
<child>
<template slot="slot_1">Slot_1 is here</template>
father say hi to you
<template slot="slot_2">
Slot_2 is here
<div>Slot_2 DIV </div>
</template>
</child>
</div>
</template>
<script>
import child from './child.vue'
export default{
data(){
return {
}
},
components:{
child,
}
}
</script>
最终渲染结果:
<div>
<div>
Slot_1 is here
Slot_2 is here
<div>Slot_2 DIV </div>
I am children
</div> </div>

浙公网安备 33010602011771号