乐趣区

关于vue.js:vue-插槽

单个插槽 | 默认插槽 | 匿名插槽

特点:一个组件中只能有一个这样的插槽
没有槽属性的 HTML 模板默认关联匿名插槽。

具名插槽

子组件:

<div>
    <div> 这是子组件 </div>
    <slot name="content"><slot>
</div>

父组件:

<div>
  <div> 这是父组件 </div>
  <child>
    <template slot="content"> 插槽内容 </template>
  </child>
</div>

显示后果:

这是父组件
这是子组件
插槽内容  --------------- 是名字为 content 的插槽外面的内容,如果没有 slot,123 不展现,

留神:
父组件应用子组件的插槽,应用什么样的标签不重要,能够用 template,能够用 div , 能够用 span

作用域插槽 | 带数据的插槽

款式父组件说了算,但内容能够显示子组件插槽绑定的。可在父组件复用
作用域插槽能够不起名,最好起名

传多个参数

子组件

<slot name="user" :data="data"></slot>

父组件

<child>
   <template slot-scope="user">
       <ul>
          <li v-for="item in user.data">{{item}}</li>
       </ul>
   </template>
</child>
// user.data  user 是插槽明,data 是绑定值

三种插槽的对别

匿名插槽
<slot></slot>
具名插槽
<slot name="up"></slot>
带数据的插槽
<slot name="user" :data="data"></slot>

slot 和 slot-scope 的区别

slot 前面跟组件的名字
slot-scope 前面跟组件传过来的数据,是形参 scope

在子组件中的插槽上有一句 data=”list”,而在父组件中也有 slot-scope=”scope”,slot-scope 就是取 data 的值,slot-scope 的值是自定义的,咱们能够取任何名称,然而 data 的值传过来时是以对象模式传输的,所以在这 scope.data 才是 list 的值。

退出移动版