当前位置: 首页 > news >正文

前端学习--vue2--插槽

写在前面:
这个用法是在使用组件和创建组件中

文章目录

  • 介绍
  • 简单使用
  • 多个插槽
  • 省写
  • 默认/后备内容
  • 作用域插槽
  • 常用实例
    • Element-ui的el-table
  • 废弃用法
    • slot attribute
    • slot-scope attribute

介绍

我们在定义一些组件的时候,由于组件内文字想要自定义,而子和父是隔离的,所以就有了这样的需求,我们可以选用插槽来达到这样的效果

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

简单使用

组件内部用slot占位
在SlotStudy组件,这里只是简单演示,组件定义了一个a标签,a的文字自定义。
在这里插入图片描述
父组件使用就是
在这里插入图片描述
效果
在这里插入图片描述

多个插槽

这样的默认插值是只能自定义一个位置的
如果想要多个的话我们想要指定name
子组件

<template><div><a><slot></slot></a><el-divider><slot name="title"></slot></el-divider></div>
</template>

父组件
v-slot:xx也提供了一个可以省写的#xx,效果是一样的。

<template><slot-study><template v-slot:default>slot插槽默认使用</template><template #title>指定name使用</template></slot-study>
</template>

效果
在这里插入图片描述

省写

v-slot:可以写成# ,在多个提到过

默认/后备内容

在子组件中如果一个自定义的地方一定想要传入内容,那么我们可以采用默认的方式来
子组件

    <el-divider><slot name="de">slot插槽默认使用</slot></el-divider>

父组件

      <template #de></template>

效果
在这里插入图片描述

作用域插槽

父子组件通过插槽传值的工具
如这样一个表格
在这里插入图片描述

我想通过删除按钮来删除这一行,就可以通过这个作用域插槽实现了

子组件
这里除了定义外,还使用了插槽获取这一行的数据
通过default来获取这一行的对象
然后将这一行的数据传递下去。

      <el-table-column label="操作"><template #default="scope"><slot :row="scope.row" :sss="'附带格外信息'"></slot></template></el-table-column>

父组件

    <slot-study :tables="tables"><template #default="obj"><button @click="remove(obj)">删除</button></template></slot-study>remove(val){console.log('删除',val)}

点击后的效果。

在这里插入图片描述

常用实例

Element-ui的el-table

当我们在element-ui想要替换渲染逻辑的时候,可以用插槽来

如在不同状态的时候展示不同的表格效果,那么我们可以

        <el-table-columnlabel="同步状态"><template v-slot:default="scope"><i :class="{'el-icon-loading':scope.row.status === 0}"/><div :class="scope.row.status | tc">{{ statuss[scope.row.status] }}</div></template></el-table-column>

通过插槽进行逻辑判断
最终呈现出不同的效果
在这里插入图片描述

格外的如果是用for循环来的<el-table-column,我们可以通过判断来进行指定单元格的渲染。
如下面案例
在tocrm的单元列的时候,进行格外的按钮渲染,其他框则是直接展示

      <el-table-columnv-for="column in columns":key="column.prop":prop="column.prop":label="column.label":width="column.width"><template v-slot:default="scope"><span v-if="column.prop === 'tocrm'"><span><el-switch v-model="scope.row.tocrm" @change="updateCRM(scope.row)"/></span></span><span v-else>{{ scope.row[column.prop] }}</span></template></el-table-column>

注意,如果用了插槽就无法进行备用/默认插槽了,就会出现没用内容的清空
在这里插入图片描述

废弃用法

slot attribute

直接使用特殊属性的 slot

<template><slot-study><template>slot插槽默认使用</template><template slot="title">指定name使用</template></slot-study>
</template>

slot-scope attribute

slot-scope特殊属性
作用就是作用域插槽的作用

    <slot-study :tables="tables"><template slot-scope="obj" slot="default"><button @click="remove(obj)">删除</button></template></slot-study>remove(val){console.log('删除',val)}

如果错误和补充,欢迎指出和补充

http://www.lryc.cn/news/104998.html

相关文章:

  • 使用 Docker Compose 部署 Redis Cluster 集群,轻松搭建高可用分布式缓存
  • 在Spring Boot框架中集成 Spring Security
  • 登月再进一步:Apollo自动驾驶的里程碑
  • 嵌入式一开始该怎么学?学习单片机
  • Spring事件监听器ApplicationListener
  • 安全学习DAY10_HTTP数据包
  • 云原生落地实践的25个步骤
  • Stable diffusion 三大基础脚本 提示词矩阵,载入提示词,XYZ图表讲解
  • uniapp uni-combox 下拉提示无匹配项(完美解决--附加源码解决方案及思路)
  • 10. Mybatis 项目的创建
  • 历年 Nobel prize in Physics (诺贝尔物理学奖)简介
  • IDEA中Git面板操作介绍 变基、合并、提取、拉取、签出
  • Android Studio开发简易APP添加代办事项
  • python 统计所有的 仓库 提交者的提交次数
  • 018-从零搭建微服务-系统服务(五)
  • HarmonyOS 开发基础(三)登录页面单向数据绑定(父组件向子组件传参)
  • 发npm包
  • <el-empty>
  • IO流(4)- 序列化流与反序列化流
  • 人工智能如何应对 DevOps 监控和可观测性挑战
  • 数字化新时代,VR全景拍摄与制作
  • uniapp 权限说明
  • 3D Web轻量化渲染开发工具HOOPS Communicator是什么?
  • 心法利器[93] | 谈校招:技术面
  • excel英语翻译让你的数据更容易被理解
  • RK3588S之CPU--benchmark(二)
  • 入侵检查基础
  • JAVA开发工具-maven的安装与配置(最新最详细教程)
  • linux系统编程重点复习--进程的控制
  • 12-1_Qt 5.9 C++开发指南_自定义插件和库-自定义Widget组件(提升法(promotion)创建自定义定制化组件)