slot插槽:是子组件里面的一块HTML模板,这块模板的显示与不显示,以及要怎样显示由父组件决定。
分为三种插槽:
匿名插槽:父组件传入样式以及内容,子组件负责展示
具名插槽:具名插槽可以在子组件出现好多次,在不同位置,对应父组件进行调用相同名字的插槽。
作用域插槽:用的父组件模板,子组件数据。拿到子组件数据是以对象的方式拿到。
//匿名插槽
index.vue 父组件
<slot2 :data="" color="" >
<ul>
<li>1</li>
<li>2</li>
</ul>
<ul slot>
<li>1</li>
<li>2</li>
</ul>
</slot2>
slot2.vue 子组件
<!--匿名插槽-->
<slot></slot>
//具名插槽
index.vue 父组件
<slot2>
<div slot="n1">
<h2>具名插槽n1</h2>
</div>
<!--具名插槽 传入父的值-->
<div slot="n2">
<h2>具名插槽n2</h2>
<ul>
<li v-for="(v,i) in arr" :key="i">{{v}}</li>
</ul>
</div>
</slot2>
slot2.vue 子组件
<!--具名插槽-->
<slot name="n1"></slot>
<slot name="n2"></slot>
//index.vue 父组件
<slot2>
<div slot-scope="scope">
{{scope.title}}
</div>
</slot2>
slot2.vue 子组件
<!-- 作用域插槽 -->
<slot :title="title"></slot>
//子组件中传入数组
//index.vue 父组件
<slot2>
<div slot-scope="scope">
<ul>
<li v-for="(v,i) in scope.arr" :key="i">{{v}}</li> //scope.arr是子组件的数据
</ul>
</div>
</slot2>
//slot2.vue 子组件
<slot :arr="arr"></slot>
data(){
return{
arr:[6,7,8,9,0]
}
}