Vue(十一)默认插槽、具名插槽、作用域插槽

news2024/9/23 13:28:02

文章目录

  • 一、需求
  • 二、插槽
    • 1. 默认插槽
    • 2. 具名插槽
    • 3. 作用域插槽

一、需求

有三个Category组件,展示不同的内容。
需求:美食模块需要展示图片,游戏模块还是文字,电影模块展示预告片。
在这里插入图片描述

<!--App组件-->
<template>
  <div class="container">
    <Category :listData="foods" title="美食"> </Category>
    <Category :listData="games" title="游戏"> </Category>
    <Category :listData="films" title="电影"> </Category>
  </div>
</template>
<script>
  data () {
    return {
      foods: ['火锅', '烧烤', '小龙虾'],
      games: ['超级玛丽', '魂斗罗'],
      films: ['寻梦环游记', '小黄人大眼萌']
    }
  }
</script>
<!--Category组件-->
<template>
  <div class="content">
    <h3 class="title">{{ title }}</h3>
    <ul>
      <li v-for="(item, index) in listData" :key="index">{{ item }}</li>
    </ul>
  </div>
</template>
<script>
 props: ['listData', 'title']
</script>

二、插槽

作用:让父组件可以向子组件指定位置插入html结构,也是一种组件间通信的方式。

1. 默认插槽

<!--父组件中:-->
     <Category>
        <div>html结构1</div>
     </Category>
<!--子组件中:-->
    <template>
        <div>
           <!-- 定义插槽,相当于在这里挖了个坑,等待组件的使用者来填充 -->
           <slot>插槽默认内容...</slot>
        </div>
    </template>

在这里插入图片描述
插槽里的这些样式放在App里也行,放在Category里也行。


在这里插入图片描述

2. 具名插槽

当子组件中包含多个插槽时,需要给每个插槽起名字
起名字:指定name属性
使用具名插槽:

  • slot = '插槽名'
  • 如果使用了template, 还可以v-slot:footer来指定使用哪个插槽(这种方式只有template可以这样写)

子组件:

<!--Category组件-->
<template>
  <div class="content">
    <h3 class="title">{{ title }}</h3>
    <slot name="center"></slot>
    <slot name="footer"></slot>
  </div>
</template>

父组件:

<!--App.vue组件-->
  <div class="container">
    <Category title="美食">
      <img slot="center" src="../public/food.jpg" alt="" />
      <div slot="footer" class="foot">
        <a href="">更多美食</a>
        <a href="">更多美食</a>
      </div>
    </Category>
    
    <Category title="游戏">
      <ul slot="center">
        <li v-for="(g, index) in games" :key="index">{{ g }}</li>
      </ul>
      <a href="#" slot="footer">单机游戏</a>
    </Category>
    
    <Category title="电影">
      <video src="https://vjs.zencdn.net/v/oceans.mp4"></video>
      <template v-slot:footer>
        <div class="foot">
          <a href="http://www.atguigu.com">经典</a>
          <a href="http://www.atguigu.com">热门</a>
          <a href="http://www.atguigu.com">推荐</a>
        </div>
      </template>
    </Category>
  </div>

在这里插入图片描述
如果插槽不指定名称,使用的时候就会出现多个同样的内容
在这里插入图片描述

在这里插入图片描述

3. 作用域插槽

子组件通过插槽给父组件传值,必须要写template来接收传过来的值。

理解:数据在组件的自身,但根据数据生成的结构需要组件的使用者来决定。(games数据在Category组件中,但使用数据所遍历出来的结构由App组件决定)

子组件Category

<template>
  <div class="content">
    <slot :films="films"></slot>
  </div>
</template>

<script>
  data () {
    return {
      films: ['寻梦环游记', '小黄人大眼萌']
    }
  }
</script>

父组件App.vue

  <div class="container">
    <Category>
      <!-- template必须要写 -->
      <template scope="scopeData">
      <!--查看scopeData具体是什么-->
      {{scopeData}}
        <ul>
          <li v-for="(item, index) in scopeData.films" :key="index"> {{ item }}</li>
        </ul>
      </template>
    </Category>
  </div>

1、 scopeData具体内容是什么?
是一个对象
在这里插入图片描述
2、获取scope数据的简单方式,解构赋值

 <template scope="{films}">
   <ul>
     <li v-for="(item, index) in films" :key="index"> {{ item }}</li>
   </ul>
 </template>

3、获取数据还有一种方式

语法:slot-scope="{films}

 <template slot-scope="{films}">...</template>

用哪种方式都行,是新旧api的原因。slot-scope是新api获取数据的方式,scope是旧api获取数据的方式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2101296.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

四款录音神器,你选对了吗?

在快节奏的现代生活中&#xff0c;我们经常需要处理大量的录音文件&#xff0c;如会议记录、采访、讲座等。为了更高效地处理这些信息&#xff0c;录音转文字工具变得越来越重要。本文将为大家介绍四款常用的录音转文字工具&#xff0c;并分享使用体验。 一、福昕PDF转换器 直…

Matlab 并联双振子声子晶体梁结构带隙特性研究

参考文献&#xff1a;吴旭东,左曙光,倪天心,等.并联双振子声子晶体梁结构带隙特性研究[J].振动工程学报,2017,30(01):79-85. 为使声子晶体结构实现范围更宽的多带隙特性&#xff0c;基于单振子型声子晶体结构弯曲振动带隙频率范围窄的局 限&#xff0c;提出了一种双侧振子布置…

电商智能分析:阿里巴巴商品详情API返回值的挖掘与利用

电商智能分析是利用大数据和机器学习技术来深入理解用户行为、商品趋势以及市场变化的过程。阿里巴巴商品详情API作为获取商品详细信息的重要工具&#xff0c;其返回值中蕴含了丰富的数据&#xff0c;可以通过挖掘和利用这些数据来进行智能分析。下面&#xff0c;我将提供一个基…

美畅物联丨科技赋能校车安全:智慧监控管理系统的创新应用

1、背景 1.1应用需求 孩子&#xff0c;作为国家未来的希望之星和民族发展的潜力所在&#xff0c;其安全与健康向来都是社会瞩目的核心要点。校车&#xff0c;作为孩子们日常出行的关键交通载体&#xff0c;其安全性更是时刻牵动着每一个家庭的敏感神经。然而&#xff0c;不可…

TensorFlow1和TensorFlow2介绍

目录 一.安装 二.TensorFlow结构分析 数据流图介绍 三.图与TensorBoard 1.图结构 2.图的相关操作 3.自定义图 4.开启会话Session中指定使用那个图 四.TensorBoard&#xff1a;可视化 1.数据序列化-events文件 2.启动TensorBoard 3.tensorflow2中使用tensorboard 1.…

【编程基础C++】素数判定、最小公倍数与最大公因数的实现方法

文章目录 素数法一法二 最大公因数辗转相除法另一写法 最小公倍数直接枚举法根据GCD算LCM 素数 素数 是指大于1的自然数&#xff0c;且只能被1和自身整除。例如&#xff0c;2、3、5和7都是素数。它们在数学中非常重要&#xff0c;因为任何大于1的自然数都可以唯一地表示为素数…

【类模板】成员函数模板

一、成员函数模板的基本含义 不管是普通的类&#xff0c;还是类模板&#xff0c;都可以为其定义成员函数模板&#xff0c;以下的情况就是类模板和成员函数模板都有各自独立的一套参数&#xff1a; template<typename T1> class A { public:T1 m_ic;static constexpr int…

电力104规约

对象性质十进制十六进制数量适用报文类型ASDU遥测1793~2304701H~900H512*9、11、21、34、35遥信1~10241H~400H1024*1、3、20、30、31遥控2817~2944B01H~B80H128*45、46遥调2945~3072B81H~C00 H128*47APCI 应用规约控制信息; ASDU 应用服务数据单元; APDU 应用规约数据单元;…

CountDownLatch的应用与原理

一、什么是CountDownLatch CountDownLatch是具有synchronized机制的一个工具&#xff0c;目的是让一个或者多个线程等待&#xff0c;直到其他线程的一系列操作完成。 CountDownLatch初始化的时候&#xff0c;需要提供一个整形数字&#xff0c;数字代表着线程需要调用countDow…

K8s系列之:解释Kubernetes Operators

K8s系列之&#xff1a;解释Kubernetes Operators 什么是控制器循环&#xff1f;Kubernetes Operator是如何工作的&#xff1f;如何添加自定义资源自定义资源定义Kubernetes Operators&#xff1a;案例研究 你是否曾想过&#xff0c;Site Reliability Engineering&#xff08;SR…

【优化】Nginx 配置页面请求不走缓存 浏览器页面禁用缓存

【优化】Nginx 配置页面请求不走缓存 禁用缓存 目录 【优化】Nginx 配置页面请求不走缓存 禁用缓存 对所有请求禁用缓存 对特定location禁用缓存 注意事项 全局禁用缓存 要配置Nginx使其不缓存内容&#xff0c;通常是指禁止浏览器缓存响应的内容&#xff0c;或者是在代理…

Qt 模仿企业微信图标实现按钮图片文字上下结构

简述 实现类似企业微信左侧导航栏的上下结构的按钮 效果图 可以用2种方案实现&#xff0c;2种最终效果图如下&#xff1a; 方案1 QToolButton 实现 ui.toolButton->setFixedSize(50, 50);ui.toolButton->setCheckable(true);ui.toolButton->setAutoExclusive(true);…

电源测试设备功能篇:测试仪器的灵活兼容与扩展

依托ATECLOUD智能云测试平台打造的电源ate自动测试设备&#xff0c;相较于传统的自动化测试系统&#xff0c;其突出特点在于提供了灵活的系统操作。这种操作灵活性不仅表现在自动化测试的便捷性、报告模板的多样化以及数据分析的灵活性上&#xff0c;还表现在电源测试仪器设备配…

覃嘉仪,艺人经纪人、经纪人、影视经纪人。2002.7.9出生于四川省遂宁市射洪县

覃嘉仪&#xff0c;艺人经纪人、经纪人、影视经纪人。2002.7.9出生于四川省遂宁市射洪县 2020年开始从事宣传工作&#xff0c;2023成为“WP经纪工作室”艺人经纪&#xff0c;现担任孙亦欣、魏逸熙等艺人的经纪人。 2024年涉足于影视行业&#xff0c;并加入嘉林娱乐。2024年在由…

部标JT808标准下的视频汇聚新方案:EasyCVR平台助力推动车辆监管智能化进程

在数字化转型的浪潮中&#xff0c;智慧城市的建设正以前所未有的速度推进&#xff0c;而市政车载设备作为城市运行的重要“神经末梢”&#xff0c;其智能化、联网化水平直接影响着城市管理效率与服务质量。近年来&#xff0c;随着部标协议&#xff08;即国家行业标准协议&#…

Python学习日志(3)—— 运行

通过python文档辅助学习&#xff0c;规范代码 python文档&#xff1a;3.12.5 Documentation (python.org) 1、python版本之间的差异&#xff1a;新的特性和变化、弃用和新增 2、标准库参考&#xff08;宝典&#xff0c;用于查询&#xff09; 3、语法参考 python程序是解释型…

记录工作时的一些错误

1、mobaxterm问题&#xff1a; 解决方案&#xff1a;找不到mottynew.exe 2、虚拟机安装centos7进入不了引导页面 解决方案&#xff1a;检查镜像 虚拟机 192.168.40.128 root/Root yxr/y123x123r123 解决方案&#xff1a; 问题&#xff1a;docker run不起来容器&#xff0c;显…

HTTP 状态码全攻略:快速搞懂服务器的“暗号”

文章目录 HTTP 状态码全攻略&#xff1a;快速搞懂服务器的“暗号”1xx&#xff1a;打个招呼&#xff0c;信息来了 (Informational Responses)2xx&#xff1a;事情办成了&#xff01; (Successful Responses)3xx&#xff1a;走这边&#xff0c;换个地方吧 (Redirection Response…

音视频——RTSP流媒体传输技术介绍及抓包解析

流式传输 流媒体技术&#xff1a;将声音影像向用户计算机 连续、不间断的进行传送&#xff0c;延时小。 抓包 route add 添加到指定网络的路由规则 route add [-net|-host] [网域或主机] netmask [mask] [gw|dev] route del [-net|-host] [网域或主机] netmask [mask] [gw|dev…

第9章 使用ContentProvider实现数据共享

第9章 使用ContentProvider实现数据共享 本章要点 理解ContentProvider的功能与意义ContentProvider类的作用和常用方法Uri 对 ContentProvider的作用理解ContentProvider与ContentResolver的关系实现自己的ContentProvider配置ContentProvider使用ContentResolver操作数据操…