vue学习-插槽

1.插槽内容

 

父组件可以在html的子组件元素中间插入html 字符串 组件,这些东西都会被插入到子组件的所占的位置上,如果子组件没有,则插入的内容会被抛弃

  
    

插槽内容

  
slot-child

渲染结果:


2.渲染作用域

父级模板里的所有内容都是在父级作用域中编译的;子模板里的所有内容都是在子作用域中编译的

插槽内可以访问与模板其余部分相同的实例 property (即相同的“作用域”),不能访问子组件的实列property

vue学习-插槽_第1张图片


3.备用内容

 子组件可以在slot标签加入备用内容。当父组件模板提供插槽内容,将渲染提供的插槽内容。如果没有,则会渲染slot标签之间的备用内容

  
    

备用内容


4.具名插槽

有时我们需要多个插槽,对于这样的情况, 元素有一个特殊的 attribute:name。这个 attribute 可以用来定义额外的插槽

template v-slot:name包含的内容会替换有相同的的name的slot的位置

一个不带 name 的 出口会带有隐含的名字“default”,即不用template也相当于v-slot:defalut,不写slot name=XX也相当于slot name="default"


5.作用域插槽

通过在slot绑定属性,父组件可以访问到这些子组件数据,多个插槽时注意name要一致

    
 

vue学习-插槽_第2张图片

独占默认插槽的缩写语法

只有一个插槽时,上面是下面一种的缩写,:default可以省略

不过,只要出现多个插槽,请始终为所有的插槽使用完整的基于