插槽-默认插槽

1.作用

         让组件内部的 结构 支持 自定义

 2.基本语法
  1. 组件内需要定制的结构部分,改用<slot></slot>占位

  2. 使用组件时, <MyDialog></MyDialog>标签内部, 传入结构替换slot

  3. 给插槽传入内容时,可以传入纯文本、html标签、组件

 

插槽-后备内容(默认值)

1.问题

通过插槽完成了任何内容的定制,传什么显示什么,如果不传,则是空白

能否给插槽设置默认显示内容呢?

2,插槽的后备内容

封装组件时,可以预留<slot> 插槽提供后备内容(默认内容)

3.语法

在<slot>标签内,放置内容,作为默认显示内容

4.效果

外部使用了组件,不传东西,则slot会显示后备内容 

外部使用组件时,传东西了,则slot整体会被换掉

插槽-具名插槽

1.需求

一个组件内又多处结构,需要外部传入标签,进行定制

上面有三处不同,但是默认插槽只能定制一个位置,这时候该怎么办? 

2.具名插槽的语法

        多个slot使用name属性区分名字

template配合v-slot:名字来分发应对标签 

3.v-slot的简写

v-slot 写起来太长,vue给我们提供了一个简单写法 v-slot --> #

作用域插槽

 1.插槽分类

        默认插槽

        具名插槽

        插槽只有俩种,作用域插槽不属于插槽的一种分类

2.作用

定义slot 插槽的同时 是可以传值的 给插槽上可以绑定数据,将来使用组件可以用

3.场景

封装表格组件

4.使用步骤

1.给slot标签,以添加属性的方式传值 

<slot :id="item.id" msg="测试文本"></slot>

2.所有添加的属性,都会被收集到一个对象中

{ id: 3, msg: '测试文本' }

3.在template 通过 #插槽名=’obj‘接收,默认插槽名为default

<MyTable :list="list">
  <template #default="obj">
    <button @click="del(obj.id)">删除</button>
  </template>
</MyTable>

Logo

前往低代码交流专区

更多推荐