Vue slot插槽作用与原理深入讲解

前言

在2.6.0中,具名插槽 和 作用域插槽 引入了一个新的统一的语法 (即v-slot 指令)。它取代了 slot 和 slot-scope。

什么是Slot

当我们生成好组件模板后,为了方便用户在调用组件的时候自定义组件内部分元素的样式或内容。于是在设计组件模板的时候会挖一个坑,等待用户使用v-slot来替换坑的slot位置。

栗子

// father.vue

Vue slot插槽作用与原理深入讲解_第1张图片

可以看见

AAAA

被 插入到child的里面。

除了可以插入HTML模板代码外,你也可以插入普通文本、其他组件、本组件的数据。

在插槽中使用数据

// father.vue

Vue slot插槽作用与原理深入讲解_第2张图片

插槽可以使用当前引用子组件的组件数据,但是不能引用传递给子组件的数据。

// father.vue

// child.vue

Vue slot插槽作用与原理深入讲解_第3张图片

Vue slot插槽作用与原理深入讲解_第4张图片

这里是获取不到childName的,因为这个值是传给

备胎插槽

// father.vue
// child.vue

这里是子组件{{ childName }}

我是备胎

Vue slot插槽作用与原理深入讲解_第5张图片

给插槽设置一个具体的默认内容,当别的组件没有给你内容的时候,那么默认的内容就会被渲染。如果我们提供内容,那么默认的插槽内容会被我们的内容覆盖。

具名插槽

当我们一个组件里需要定义多个插槽时,需要使用slot元素的特性name来定义额外的插槽。

// child.vue
// father.vue
 
    
    
    

如果一个不带name属性的话,那么它的name默认为default,可以不用v-slot去指定它。(如果你非要折腾,也可以写name="default")

在向具名插槽提供内容的时候,我们可以在