1、什么是插槽
1、插槽就是在子组件中提供父组件一个占位符,用于用户填充任何自己所需求的模板代码,
2、插槽显不显示、怎样显示是由父组件来控制的,而插槽在哪里显示在什么位置就由子组件来进行控制
3、可以把插槽认为是组件封装期间,为用户预留的内容的占位符。
2、什么时候使用插槽
当子组件被复用时,需要在特定的区域展示不同的需求内容
3.使用
3.1.匿名插槽(默认插槽)
1 2 3 4 5 6 7 8 9 10
| <template> <div> <Category> <a href="#" slot="footer">更多信息</a> </Category> </div> </template>
|
1 2 3 4 5 6 7
| <template> <div> <slot></slot> </div> </template>
|
3.2.具名插槽
需要使用多个插槽的时候,定义一个 name 属性,区分插槽对应的位置。
1 2 3 4 5 6 7 8
| <template> <div> <Category> <img slot="center" src=""/> <a slot="footer" href="#">更多信息</a> </Category> </div> </template>
|
1 2 3 4 5 6 7 8 9 10
|
<template> <div class="category"> <slot name="center"> slot标签,这个位置也可以写内容 </slot> <slot name="footer"></slot> </div> </template>
|
3.3.作用域插槽
当父组件需要用到子组件里的数据时,通过插槽传递数据。
1 2 3 4 5 6 7 8 9 10 11 12 13
| <template> <div class="container"> <Category > <template slot="link" slot-scope="scope"> <span v-for="item in scope.data" :key="item">{{item}}</span> </template> </Category> </div> </template>
|
1 2 3 4 5 6 7
| <template> <div class="category"> <slot :data="data">test</slot> </div> </template>
|