vue-插槽 slot
“占坑”,在组件模板中占好了位置,当使用该组件标签时候,组件标签里面的内容就会自动填坑(替换组件模板中<slot>位置),当插槽也就是坑<slot name= ” mySlot ” >有命名时,组件标签中使用属性slot= ” mySlot ” 的元素就会替换该对应位置内容
<template>
<div>
<slot></slot>
<slot style=”color:blue;” >这是在slot上添加了样式</slot>
<slot name=”mySlot”>这是拥有命名的slot的默认内容</slot>
</div>
</template>
组件中有多个命名的slot
<!-- old -->
<children>
<template slot="header">
<h1>Here might be a page title</h1>
</template>
<template slot="default">
<p>A paragraph for the main content.</p>
<p>And another one.</p>
</template>
</children>
<!-- new -->
<children>
<template v-slot:header>
<!-- <template #header> 具名插槽可缩写形式 -->
<h1>Here might be a page title</h1>
</template>
<template v-slot:default>
<p>A paragraph for the main content.</p>
<p>And another one.</p>
</template>
</children>
作用域插槽实际上是带有数据的插槽
<!-- old --> <children> <template slot="default" slot-scope="scope"> {{ scope.user.firstName }} </template> </children> <!-- new --> <children> <template v-slot:default="scope"> // default可以省略,默认插槽的缩写语法 <template v-slot="scope"> {{ scope.user.firstName }} </template> </children>
常用场景:
-
需要在列表中进行非文本渲染,比如渲染图片、按钮、进度条等;
-