位置: 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——更改端口号——基础积累

  • airpods可以分开独立使用吗(airpods可以分开用吗)

    airpods可以分开独立使用吗(airpods可以分开用吗)

  • 笔记本内存条怎么装(笔记本内存条怎么拆)

    笔记本内存条怎么装(笔记本内存条怎么拆)

  • 红米10xpro怎么反向充电(红米10x4g反向充电怎么操作)

    红米10xpro怎么反向充电(红米10x4g反向充电怎么操作)

  • 卡贴机打电话要加86(卡贴机打电话要下载什么软件)

    卡贴机打电话要加86(卡贴机打电话要下载什么软件)

  • 蚂蚁森林怎么获得公益林证书(蚂蚁森林怎么获得绿色能量)

    蚂蚁森林怎么获得公益林证书(蚂蚁森林怎么获得绿色能量)

  • 手机拍照存入存储卡的图片属于什么数据(手机拍照片存在手机哪里)

    手机拍照存入存储卡的图片属于什么数据(手机拍照片存在手机哪里)

  • 小米手机里的智能服务是什么(小米手机里的智能出行可以卸载吗)

    小米手机里的智能服务是什么(小米手机里的智能出行可以卸载吗)

  • 抖音直播有电流声怎么办(抖音直播有电流杂音)

    抖音直播有电流声怎么办(抖音直播有电流杂音)

  • 为什么苹果耳机连接了没有声音(为什么苹果耳机连接了还是外放)

    为什么苹果耳机连接了没有声音(为什么苹果耳机连接了还是外放)

  • qq离线文件最大多少g(qq离线文件大小限制)

    qq离线文件最大多少g(qq离线文件大小限制)

  • ipad第六代叫什么(ipad第六代叫啥)

    ipad第六代叫什么(ipad第六代叫啥)

  • 压缩包大于100m怎么办(压缩包大于100兆怎么发送到微信)

    压缩包大于100m怎么办(压缩包大于100兆怎么发送到微信)

  • 佳能eos什么意思(佳能eos全称)

    佳能eos什么意思(佳能eos全称)

  • 怎样登qq号不用短信验证码(怎样登qq号不用验证码)

    怎样登qq号不用短信验证码(怎样登qq号不用验证码)

  • 不换套餐可以用5g网络吗(手机套餐不变换手机号可以吗)

    不换套餐可以用5g网络吗(手机套餐不变换手机号可以吗)

  • 微信运动会延迟吗(微信运动会延迟多久更新)

    微信运动会延迟吗(微信运动会延迟多久更新)

  • 苹果手机麦克风启用不成功怎么办(苹果手机麦克风权限怎么打开)

    苹果手机麦克风启用不成功怎么办(苹果手机麦克风权限怎么打开)

  • 有什么p图软件可以改数字(有什么p图软件可以p掉衣服)

    有什么p图软件可以改数字(有什么p图软件可以p掉衣服)

  • 苹果手机怎么长截屏(苹果手机怎么长截图屏幕)

    苹果手机怎么长截屏(苹果手机怎么长截图屏幕)

  • 苹果手表有睡眠监测吗(苹果手表有睡眠监测软件吗)

    苹果手表有睡眠监测吗(苹果手表有睡眠监测软件吗)

  • 支付宝能给别人充话费吗(支付宝能给别人银行卡转账吗)

    支付宝能给别人充话费吗(支付宝能给别人银行卡转账吗)

  • 嗨来电锁屏广告怎么关(来电秀锁屏广告怎么去掉)

    嗨来电锁屏广告怎么关(来电秀锁屏广告怎么去掉)

  • 微信电话怎么看谁挂的?(微信电话怎么看出来对方不想接)

    微信电话怎么看谁挂的?(微信电话怎么看出来对方不想接)

  • 安卓和苹果蓝牙能配对吗(安卓和苹果蓝牙怎么传视频)

    安卓和苹果蓝牙能配对吗(安卓和苹果蓝牙怎么传视频)

  • airpods可以用安卓手机吗(airpods可以用安卓充电吗)

    airpods可以用安卓手机吗(airpods可以用安卓充电吗)

  • 解压速度和什么有关(解压速度和什么无关)

    解压速度和什么有关(解压速度和什么无关)

  • appdata文件夹在哪里详细介绍(appdata文件夹在用户文件夹哪里)

    appdata文件夹在哪里详细介绍(appdata文件夹在用户文件夹哪里)

  • PPS影音在线播放进程出现PPSAP.exe对系统有没有影响(pps影音怎么看电视直播)

    PPS影音在线播放进程出现PPSAP.exe对系统有没有影响(pps影音怎么看电视直播)

  • 递延所得税资产账务处理
  • 一键报税财务软件破解版
  • 政府的慰问金一般有多少钱
  • 统一机构信用代码查询系统
  • 贴现法付息的有效年利率
  • 购买车间使用的设备计入什么
  • 研发费用直接计入成本吗
  • 签合同前的费用由谁承担
  • 应付票据与应付账款
  • 差额发票能不能报销
  • 2019年小微企业六税两费减免
  • 固定资产公允价值减去处置费用后的净额
  • 教育费附加计费单位
  • 房产公司办公室布局
  • 公司银行社保代缴怎么交
  • 非货币性资产对外投资
  • 服务业发票税率是多少
  • 开普通发票现金走账怎样处理?
  • 增值税留底税怎么计算
  • 企业税收扣除标准
  • 到底如何理解参数方程
  • 企业为什么要缴纳增值税
  • 公司预付的货款怎么做账
  • 领用工程物资用于在建工程的进项税抵扣问题
  • 月息和年息的换算公式等额本息
  • 纳税额和纳税总额
  • 劳务费个税扣税
  • ubuntu18.04 u盘安装
  • php递归函数详解
  • php __destruct
  • PHP:curl_multi_init()的用法_cURL函数
  • 购买土地前期测量费怎么入账
  • 发行可转换优先股记入权益工具吗
  • 本季度企业所得税
  • 白 犀牛
  • YII Framework的filter过滤器用法分析
  • 符合资本化的研发支出不影响利润总额吗
  • c++好学
  • hive dt
  • yolov5s
  • 计算模型的层次划分
  • php页面跳转可以用header
  • 人力资源增加什么资金积累
  • 每年结息一次,到期一次还本是单利
  • 车间领用材料应编制什么凭证
  • java数组合并变字符串
  • phpcms v9网页禁止复制
  • 已经抵扣的进项税额转出会计分录
  • 主营业务税金及附加和税金及附加的区别
  • 房地产开发企业成本核算方法
  • 印刷行业成本核算程序
  • 企业主营业务收入科目下的余额应转入的科目是
  • 纳税人办理普通发票流程
  • 收到上年度所得税退税款会计分录怎么写
  • 发生的计提费用没有发生怎么办
  • 定额备用金怎么做分录
  • 外币折算会计思维导图
  • 预提成本和冲回成本金额不一致情况说明
  • 应缴国库款和应缴专户款的区别
  • 基金会收到捐款的会计分录
  • 公司是否可以投资股票
  • 库存商品怎么做表格
  • 供应商质量索赔流程
  • 会计师事务所工作怎么样
  • 行转列sql函数
  • centos7安装mysql并jdbc测试教程
  • wlanplus是什么软件
  • win10系统无法开机怎么修复
  • win10登陆界面怎么关闭
  • linux的curl
  • win10 rs4
  • 安装与配置linux操作系统
  • 汤姆猫arcode
  • js 箭头表达式
  • linux安装xen
  • js必须掌握的知识点
  • 如何查询税务情况
  • 车船税可以异地补办吗
  • 吉林省地税局电话号码
  • 税务机关垂直领导
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设