位置: IT常识 - 正文

Vue2 插槽的使用【默认插槽、具名插槽、作用域插槽】(vue插槽有什么作用)

编辑:rootadmin
Vue2 插槽的使用【默认插槽、具名插槽、作用域插槽】

推荐整理分享Vue2 插槽的使用【默认插槽、具名插槽、作用域插槽】(vue插槽有什么作用),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue插槽有什么作用,vue2插槽的使用,vuetify插槽,vue3.0 插槽,vue插槽的使用场景,vue2插槽的使用场景,vue 插槽详解,vue2插槽的使用,内容如对您有帮助,希望把文章链接给更多的朋友!

 前言:

      这篇文章我们一起来学习一下 Vue2 插槽的使用,文章大致分为两个模块,第一部分是什么是插槽,其作用是什么,第二部分为三种插槽的使用,分别为默认插槽,具名插槽,作用域插槽,相信大家学习完这篇文章后一定会受益匪浅

 文章目录:

一:什么是插槽

二:默认插槽 

2.1 默认插槽说明

2.2 默认插槽使用 

三:具名插槽 

3.1 具名插槽说明

3.2 具名插槽使用

四:作用域插槽 

4.1 作用域插槽说明

4.2 作用域插槽使用

一:什么是插槽

       例如老板要让你使用组件写分类栏,然后使用该组件生成两个分类栏,这两个分类栏里的数据都不一样,但是整体结构是一样的,这就要求组件的结构一样,但是内部 DOM 结构是由使用组件的时候决定的,这就需要插槽,其就像放在组件中的占位标签,使用组件时我们将要放到占位标签处的DOM结构写入组件标签体中即可。

       例如如下图例子,第一个分类框我们要展示热门电影,第二个分类框我们要展示一张风景图,整体的框架是一样的,只是其内部填充的东西不一样下面会做出更深刻的理解。

二:默认插槽 2.1 默认插槽说明

      此板块我们讲述第一个插槽:默认插槽。之前我们使用组件的时候,引入进 App.vue 后注册就可以采用 自闭合 与  完整组件标签 的方式使用,以下就是常采用的自闭合与完整组件标签方式(以 test组件为例)

<template> <test/> //自闭合方式 <test></test> //完整组件标签的方式</template>

         但是插槽的使用我们就要把要放在插槽中的内容写在组件标签体内,例如我们要在插槽中放入一个 ul 列表,那么我们使用组件时就要这样书写:

<template> <test> //组件标签 <ul> <li></li> <li></li> <li></li> </ul> </test> </template>

       接下来说说默认插槽的写法,如果我们只在使用组件时的组件标签体内写上内容,那页面上是显示不出来任何东西的,这是因为标签体内的内容确实被解析了,但是vue不知道要把这些东西放在组件中 template 的哪个位置,故我们要在组件的 template 中设置一个插槽来占位,以保证使用组件时其解析的内容可以放入占的位置中去。占位我们使用一个很重要的标签 ------ slot,我们需要在组件的 template 中这样书写:

<template> <div> <span>我是一个组件,下面是我的插槽内容</span> <slot></slot> //默认插槽 </div></template>

这样使用组件时组件标签体中的内容就可以放入组件的默认插槽中了

2.2 默认插槽使用 

       我们来实现一下上述的分类案例,让第一个分类展示电影,第二个分类放一张图片进去,但整体组件结构一样

 classify.vue组件:

<template> <div class="classify-box"> <div class="title">{{name}}</div> <slot></slot> //slot设置默认插槽来占位 </div></template><script>export default { name:'Classify', data() { return { } }, props:['name'] //propos接收传来的标题名称}</script><style scoped> //css太占地方就删掉了</style>

App.vue组件:

<template> <div class="app-box"> <Classify name='热门电影'> //使用组件并在组件标签体中书写要放进插槽中的内容 <ul> <li>肖申克的救赎</li> <li>1912</li> <li>零的执行人</li> </ul> </Classify> <Classify name="风景"> <img src="./img/QQ图片20220818163031.jpg" alt=""> </Classify> </div></template><script>import Classify from './components/classify.vue' //引入组件export default { name: 'App', data() { return { } }, components: { Classify:Classify //注册组件 }}</script><style scoped> //css太占位置删掉了</style>

这样就可以实现一个最基本的默认插槽案例了 

三:具名插槽 3.1 具名插槽说明Vue2 插槽的使用【默认插槽、具名插槽、作用域插槽】(vue插槽有什么作用)

       具名插槽其实只是在默认插槽的基础上给每个插槽起了名字,作用为可以在组件中设置多个插槽,可以更具体细分。首先给组件插槽起名字,使用 name="xxx"。

<template> <div> <span>我是一个组件,下面是我的多个具名插槽内容</span> <slot name="header"></slot> //header具名插槽 <slot name="body"></slot> //body具名插槽 <slot name="footer"></slot> //footer具名插槽 </div></template>

        上面就在组件中定义好了三个具名插槽,下面我们来看使用插槽的写法,依旧是在使用组件标签时在标签体内写入内容,但是要注意要使用 slot="xxx" 写在组件标签体外层盒子上来指明放入哪个插槽中

<template> <div class="app-box"> <Classify> <div slot="header"> //放入header插槽 <span>我在header插槽中</span> </div> <div slot="body"> //放入body插槽 <span>我在body插槽中</span> </div> <div slot="footer"> //放入footer插槽 <span>我在footer插槽中</span> </div> </Classify> </div></template>

       上面的写法其实并不完善,slot写在每个指定插槽的外层大盒子 div 上了,这样会给其增加一层 DOM 结构,我们最好把 div 换成 template 标签,因为 template 标签不会被解析,结构更清晰不多余。

3.2 具名插槽使用

下面简单实现一下具名插槽的使用

 classify.vue组件:

<template> <div class="classify-box"> <div class="title">下面是具名插槽的内容</div> <slot name="header"></slot> <slot name="body"></slot> <slot name="footer"></slot> </div></template><script>export default { name:'Classify', data() { return { } },}</script><style scoped></style>

App.vue组件:

<template> <div class="app-box"> <Classify> <div slot="header"> <span>我在header插槽中</span> </div> <div slot="body"> <span>我在body插槽中</span> </div> <div slot="footer"> <span>我在footer插槽中</span> </div> </Classify> </div></template><script>import Classify from './components/classify.vue'export default { name: 'App', data() { return { } }, components: { Classify:Classify }}</script><style scoped></style>

这样就简单实现了具名插槽 

四:作用域插槽 4.1 作用域插槽说明

       作用域插槽较难理解,但其简单解释就是带有数据的插槽,把组件中的数据绑定给插槽,然后谁使用这个组件谁就能拿到这个数据使用,也相当于一种数据通信,其需要这样把数据绑定定义给组件插槽(名称没有要求)

<template> <div class="classify-box"> <div class="title">下面是作用域插槽的内容</div> <slot :hobby="hobby"></slot> //将数据绑定给组件插槽 </div></template><script>export default { name:'Classify', data() { return { hobby:['打游戏','睡大觉','吃大餐'] //要绑定的数据 } },}</script>

然后就要使用组件时使用 slot-scope="xxx" 去接收,或者直接使用 scope,要注意的是此处标准一点最好写在 template 中,这里的 xxx 不需要和组件插槽中起的名字一样,随便起就行。然后我们打印一下接收到的数据看看其是什么

<template> <div class="app-box"> <Classify> <template slot-scope="datas"> <div>{{datas}}</div> </template> </Classify> </div></template>

       可以看到我们接受到了一个对象,对象中包含的是你插槽中绑定的所有数据(我们只绑定了一个所以对象里只有一组数据),对此我们就能在组件标签体中使用得到的数据了

4.2 作用域插槽使用

下面简单实现一下作用域插槽的使用

 classify.vue组件:

<template> <div class="classify-box"> <div class="title">下面是作用域插槽的内容</div> <slot :hobby="hobby"></slot> </div></template><script>export default { name:'Classify', data() { return { hobby:['打游戏','睡大觉','吃大餐'] } },}</script><style scoped></style>

App.vue组件:

此处 slot-scope 接收的数据使用了es6解构把数据解构出来了

<template> <div class="app-box"> <Classify> <template slot-scope="{hobby}"> <ul> <li v-for="(h,index) in hobby" :key="index">{{h}}</li> </ul> </template> </Classify> </div></template><script>import Classify from './components/classify.vue'export default { name: 'App', data() { return { } }, components: { Classify:Classify }}</script><style scoped></style>

这样就简单实现了作用域插槽的案例

 感谢支持

本文链接地址:https://www.jiuchutong.com/zhishi/295319.html 转载请保留说明!

上一篇:黏菌算法(Slime Mould Algorithm,SMA)(黏菌算法总结)

下一篇:vscode+live server——更改端口号——基础积累

  • 一张卡可以绑定两个支付宝吗(一张卡可以绑定多个nfc设备吗)

    一张卡可以绑定两个支付宝吗(一张卡可以绑定多个nfc设备吗)

  • 手机怎么关闭无障碍(手机怎么关闭无响应提示)

    手机怎么关闭无障碍(手机怎么关闭无响应提示)

  • 嘀嗒平台收多少手续费(嘀嗒平台收多少押金)

    嘀嗒平台收多少手续费(嘀嗒平台收多少押金)

  • mi5x是什么手机(小米5x什么时候出来的)

    mi5x是什么手机(小米5x什么时候出来的)

  • 全民k歌怎么撤回私信(全民k歌怎么撤回发布的作品)

    全民k歌怎么撤回私信(全民k歌怎么撤回发布的作品)

  • 抖音直播怎么不显示音浪(抖音直播怎么不让别人看观众资料)

    抖音直播怎么不显示音浪(抖音直播怎么不让别人看观众资料)

  • 待机是关机的意思吗(待机和关机)

    待机是关机的意思吗(待机和关机)

  • 移动盒子插u盘没反应(移动盒子插u盘无法启动)

    移动盒子插u盘没反应(移动盒子插u盘无法启动)

  • 微信视频号的好处(微信视频号的好友赞过那个显示的是最新的吗?)

    微信视频号的好处(微信视频号的好友赞过那个显示的是最新的吗?)

  • 网页是如何形成的(网页是如何形成的?网页与网站是什么关系?)

    网页是如何形成的(网页是如何形成的?网页与网站是什么关系?)

  • ipad2018分辨率怎么调(2018款ipad分辨率)

    ipad2018分辨率怎么调(2018款ipad分辨率)

  • qq改不了备注怎么回事(QQ改不了备注怎么回事)

    qq改不了备注怎么回事(QQ改不了备注怎么回事)

  • 苹果手机语音助手在哪里设置(苹果手机语音助手叫什么中文)

    苹果手机语音助手在哪里设置(苹果手机语音助手叫什么中文)

  • 为什么企鹅电竞看不了直播(为什么企鹅电竞宣布将退市停运)

    为什么企鹅电竞看不了直播(为什么企鹅电竞宣布将退市停运)

  • 快手打不开闪退怎么回事(快手打不开闪退问题)

    快手打不开闪退怎么回事(快手打不开闪退问题)

  • iphone应用数据备份(苹果应用程序备份)

    iphone应用数据备份(苹果应用程序备份)

  • 华为畅享10系列什么时候上市(华为畅享10系列哪一款最好)

    华为畅享10系列什么时候上市(华为畅享10系列哪一款最好)

  • 抖音直播粉丝团怎么退团(抖音主播的粉丝团在哪里看)

    抖音直播粉丝团怎么退团(抖音主播的粉丝团在哪里看)

  • 苹果电脑可以拓展内存吗(苹果电脑扩展屏幕切换快捷键)

    苹果电脑可以拓展内存吗(苹果电脑扩展屏幕切换快捷键)

  • 云闪付证件号与姓名不一致怎么办(云闪付证件号是什么)

    云闪付证件号与姓名不一致怎么办(云闪付证件号是什么)

  • 转转平台的钱怎么提现(转转平台的钱怎么用)

    转转平台的钱怎么提现(转转平台的钱怎么用)

  • keep连续包月怎么取消(keep连续包月怎么取消苹果)

    keep连续包月怎么取消(keep连续包月怎么取消苹果)

  • 陌陌神豪1要刷多少(陌陌神豪多少钱)

    陌陌神豪1要刷多少(陌陌神豪多少钱)

  • 44岁了,我从没想过在CSDN创作2年,会有这么大收获(44岁就没有月经了正常吗)

    44岁了,我从没想过在CSDN创作2年,会有这么大收获(44岁就没有月经了正常吗)

  • Vue.js安装与创建默认项目(详细步骤)(vue.js如何安装)

    Vue.js安装与创建默认项目(详细步骤)(vue.js如何安装)

  • phpcms无法上传附件怎么办(php上传不了文件)

    phpcms无法上传附件怎么办(php上传不了文件)

  • 税收收入包括哪些形式
  • 美国个税计算器2021计算器
  • 所得税的账务处理流程
  • 医院工作服记什么科目
  • 办公室转租怎么给对方开发票
  • 房租 收入
  • 用库存现金支付职工医药费用69元,会计人员
  • 城建税如何核算成本
  • 当月进项税额大于销项税额
  • 企业自建房产提成多少
  • 什么是差额增收
  • 季度交的企业所得税怎么做账
  • 预缴物业费是否符合法律规定
  • 化妆品消费税是从价还是从量
  • 现金抵扣到底要不要缴纳增值税?
  • 车间管理人员工作总结
  • 残疾人就业保障金
  • 计提了坏账准备对利润的影响
  • 材料销售的账务处理
  • 处理固定资产账务处理税率
  • 合伙企业年度汇缴申报
  • 发票丢了还可以重开吗
  • 宣传用品发票包括哪些
  • 内部交易进项税怎么算
  • 个人出租房屋税款代征点电话
  • 报销差旅费退回余款填什么凭证
  • 残疾人保障金汇算清缴填在哪里
  • 冲减预付款
  • 收到客户预付的保费90000元,存入银行
  • 公司已经改名原来的公章还有效吗
  • php 生成缩略图
  • PHP:mcrypt_generic()的用法_Mcrypt函数
  • PHP:imagefontwidth()的用法_GD库图像处理函数
  • tensorflow2安装
  • 人工智能会影响经济发展吗
  • thinkphp官网
  • 简述php操作mysql数据库的基本步骤
  • 企业所得税中工资总额
  • 专用发票能当月抵扣吗
  • 企业所得税预缴纳税申报表
  • 税票抵扣是多少个点
  • 织梦模板安装完整教程
  • gin框架使用案例
  • mysql基础操作命令
  • php怎么连接sqlserver
  • sql语句清空表中数据
  • 印花税该是如何征收的
  • 未认证未抵扣的进项税
  • 收到法院退回的诉讼费怎么做账
  • 增值税期末留抵税额是什么意思
  • 国外公司与国内公司签约
  • 连锁零售药房
  • 免征增值税账务处理办法
  • 发票验旧就是作废么?
  • 销售开票怎么做会计分录
  • 普通发票作废如何恢复
  • 没有发票的费用可以税前扣除吗
  • 财务费用中的利息费用指什么
  • 企业会计准则2023电子版
  • Win7旗舰版系统安装
  • vidaa 破解
  • win7系统只有一个鼠标箭头然后重启
  • windows地图导航
  • linux日期与时间
  • linux进程的环境变量
  • Tips(1)glewExperimental
  • Unity3D游戏开发标准教程
  • js图形界面
  • js设计模型
  • node.js 微信小程序
  • 安卓手机管家是什么
  • 简单谈谈你对公安工作的认识
  • 开出去的专用发票存根怎么处理的
  • 土地增值税按什么价格
  • 国税地税发票编码查询
  • 医院电子发票怎么查
  • 个体税务注销退税怎么退
  • 住房公积金交纳的原则
  • 广西税务查询
  • 营业税属于地方税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设