Vue3 中插槽(slot)的用法


概要

Vue3(其实从2.6开始)中引入了一个新的指令v-slot,用来表示具名插槽和默认插槽

基础示例



    {{ msg }}




     

为什么要这么做

在v2.5中介绍了slot-scope,可以直接在插槽元素上使用。


    
{{ msg }}

同样的,我们也可以在组件上这样使用。


    
        {{ msg }}
    

然而,上面的示例会导致一个问题:slot-scope的位置不能清晰的反映出这个作用域变量是哪一个 组件提供的。上面例子中slot-scope是写在组件上,但是实际上这个作用域变量的定义是有组件的默认插槽提供的。
当嵌套的层级越深,情况就会变得越糟。


  
    
      
{{ foo }} {{ bar }} {{ baz }}

像上面这种情况,我们无法立即分辨出模板上作用域变量是由那一个组件提供的。

细节设计

引入一个新的指令v-slot

我们可以在slot容器