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

VUE---插槽

一、插槽的作用&场景

        1、在封装组件的时候,将可变的结构设计为插槽(<slot></slot>

        2、使用上述组件的时候,可以按需为插槽提供自定义的结构,以达到复用组件且高度自定的效果

二、基本语法 

1、组件内需要自定义的结构部分,改为<slot></slot>占位

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

注:<slot>默认内容</slot>,若MyDialog中不传内容,则会显示slot的默认内容

示例如下:

// MyDialog -- 子组件
<template><div class="dialog"><div class="dialog-header"><h3>友情提示</h3><span class="close">✖ </span></div><div class="dialog-content"><!-- 内容区,内容不固定,用slot占位 --><slot></slot></div><div class="dialog-footer"><button>取消</button><button>确认</button></div></div>
</template>
// 父组件内容如下
<MyDialog><!-- 为插槽提供所需要展示的结构 -->你确认要进行删除操作么?
</MyDialog>

结果如下:

  

三、具名插槽

 一个组件内有多处结构,需要传入外部标签进行定制时,需要使用具名插槽。

语法:

        1、给slot添加name属性,以区分结构

        2、父组件中用<template></template>包裹语句块,配合v-slot:名字,来对应结构位置

注:

        v-slot 可以简写为 #;

        父组件中一定要用<template></template>;

        默认的slot插槽的名字为default;

 示例如下:

<!-- 子组件内容如下 -->
<div class="dialog-header"><slot name="head"></slot>
</div>
<div class="dialog-content"><slot name="content"></slot>
</div>
<div class="dialog-footer"><slot name="footer"></slot>
</div>

 

<!-- 父组件内容如下v-slot == #-->
<MyDialog><template #head>大标题</template><template #content>内容文本</template><template v-slot:footer><button>按钮</button></template>
</MyDialog>

结果如下:

 

四、作用域插槽 

        有时候,子组件在定义插槽的时候,需要向父组件传递一些数据,这样的插槽叫做作用域插槽。

使用步骤:

        (1)给子组件的slot标签,以添加属性的方式传值

        (2)所有的属性都会被收集到一个对象中

        (3)父组件的template中,利用#插槽名="obj" 接收

注:

        传递的属性不能叫name,name是插槽的名字;

        作用域插槽只能在当前的template中使用;

示例如下:

<!-- 子组件 -->
<slot uname="Tom" age="18"></slot>
<!-- 父组件 -->
<template #default="obj"><p>显示内容{{obj}}</p>
</template>
<!-- 父组件接收数据时,可以直接解构使用,#default="{ uname, age }"; -->
<template #default="{ uname, age }"><p>{{uname}} {{age}}</p>
</template>

结果如下:

相关文章:

  • Double 4 VR智能互动教学系统:创新酒店管理专业课堂教学
  • 离线数据仓库-关于增量和全量
  • Javascript入门||基础篇
  • React16源码: React中的completeUnitOfWork的源码实现
  • k8s 使用cert-manager证书管理自签
  • php array_diff 比较两个数组bug避坑 深入了解
  • 【书生·浦语大模型实战营06】《OpenCompass 大模型评测》学习笔记
  • java并发面试题
  • openssl3.2/test/certs - 006 - trust variants: +anyEKU -anyEKU
  • C语言练习day8
  • 【Linux】:线程池(逐行解析代码)
  • 配置redis挂载
  • 使用docker以容器方式安装redis
  • 【论文+视频控制】23.08DragNUWA1.5:通过集成文本、图像和轨迹来进行视频生成中的细粒度控制 (24.01.08开源最新模型)
  • linux下vsc的自动切换输入法解决方案
  • 【EOS】Cleos基础
  • chrome扩展demo1-小时钟
  • CSS 专业技巧
  • go语言学习初探(一)
  • java2019面试题北京
  • js如何打印object对象
  • JS字符串转数字方法总结
  • LintCode 31. partitionArray 数组划分
  • Linux各目录及每个目录的详细介绍
  • mongo索引构建
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • SpriteKit 技巧之添加背景图片
  • Windows Containers 大冒险: 容器网络
  • 构造函数(constructor)与原型链(prototype)关系
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 技术:超级实用的电脑小技巧
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 让你的分享飞起来——极光推出社会化分享组件
  • 我与Jetbrains的这些年
  • 用jQuery怎么做到前后端分离
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • 【云吞铺子】性能抖动剖析(二)
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • 树莓派用上kodexplorer也能玩成私有网盘
  • !!java web学习笔记(一到五)
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)springboot教学评价 毕业设计 641310
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)德国人的记事本
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • ./和../以及/和~之间的区别
  • .NET : 在VS2008中计算代码度量值