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>
常用场景:
-
需要在列表中进行非文本渲染,比如渲染图片、按钮、进度条等;
-