您的位置:首页 > 产品设计 > UI/UE

vue 使用Slot 分发内容

2017-11-07 10:32 721 查看


单个slot

  除非子组件模板包含至少一个 
<slot>
 插口,否则父组件的内容将会被丢弃。当子组件模板只有一个没有属性的 slot 时,父组件整个内容片段将插入到 slot 所在的 DOM 位置,并替换掉 slot 标签本身。

  最初在 
<slot>
 标签中的任何内容都被视为备用内容。备用内容在子组件的作用域内编译,并且只有在宿主元素为空,且没有要插入的内容时才显示备用内容。

以下代码为 app.vue文件中的代码

  渲染结果为



  我们发现写在 children模板内部的span被默认删除了。如果想让span显示那么此刻就应该使用slot。

  代码实例:对App.vue的代码做如下修改

  


那么此时span标签的内容就被渲染出来了。如果在childrem中如果不写span标签那么slot默认会渲染slot里面的内容


具名slot

  上面案例中讲解的是当组件的模板中有一个slot的方法,那么一个组件中如果想使用多个slot那么此时就应该使用具名slot。

  
<slot>
 元素可以用一个特殊的属性 
name
 来配置如何分发内容。多个 slot 可以有不同的名字。具名 slot 将匹配内容片段中有对应 
slot
 特性的元素。

  仍然可以有一个匿名 slot ,它是默认 slot ,作为找不到匹配的内容片段的备用插槽。如果没有默认的 slot ,这些找不到匹配的内容片段将被抛弃。

  代码实例:修改App.vue的代码

  

  渲染结果为

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: