11-Vue技术栈之插槽的使用

news2024/11/22 11:24:56

目录

  • 1、作用
  • 2、分类
  • 3、使用方式
  • 4、插槽的应用

1、作用

  • 让父组件可以向子组件指定位置插入html结构,也是一种组件间通信的方式,适用于 父组件 ===> 子组件

2、分类

  • 默认插槽、具名插槽、作用域插槽

3、使用方式

  1. 默认插槽:

    父组件中:
            <Category>
               <div>html结构1</div>
            </Category>
    子组件中:
            <template>
                <div>
                   <!-- 定义插槽 -->
                   <slot>插槽默认内容...</slot>
                </div>
            </template>
    
  2. 具名插槽:

    父组件中:
            <Category>
                <template slot="center">
                  <div>html结构1</div>
                </template>
    
                <template v-slot:footer>
                   <div>html结构2</div>
                </template>
            </Category>
    子组件中:
            <template>
                <div>
                   <!-- 定义插槽 -->
                   <slot name="center">插槽默认内容...</slot>
                   <slot name="footer">插槽默认内容...</slot>
                </div>
            </template>
    
  3. 作用域插槽:

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

    2. 具体编码:

      父组件中:
      		<Category>
      			<template scope="scopeData">
      				<!-- 生成的是ul列表 -->
      				<ul>
      					<li v-for="g in scopeData.games" :key="g">{{g}}</li>
      				</ul>
      			</template>
      		</Category>
      
      		<Category>
      			<template slot-scope="scopeData">
      				<!-- 生成的是h4标题 -->
      				<h4 v-for="g in scopeData.games" :key="g">{{g}}</h4>
      			</template>
      		</Category>
      子组件中:
              <template>
                  <div>
                      <slot :games="games"></slot>
                  </div>
              </template>
      		
              <script>
                  export default {
                      name:'Category',
                      props:['title'],
                      //数据在子组件自身
                      data() {
                          return {
                              games:['红色警戒','穿越火线','劲舞团','超级玛丽']
                          }
                      },
                  }
              </script>
      

4、插槽的应用

  • 实现效果:

在这里插入图片描述

  • 结构目录
    在这里插入图片描述
    App组件
<template>
  <div class="container">
    <Category title="美食">
      <template slot="slots" slot-scope="infos">
        <ul>
          <li v-for="(f, index) in infos.info.foods" :key="index">{{ f }}</li>
        </ul>
        <img
          src="https://ts1.cn.mm.bing.net/th/id/R-C.75121d5ce24b24e3f2403acd7685bccd?rik=IytdeQxEz5B9gg&riu=http%3a%2f%2fimg95.699pic.com%2fphoto%2f50099%2f7143.jpg_wh860.jpg&ehk=deNF%2fD9bPTLPy9YYfehgbZlj5cTQfCN0E9RGcHGiQY8%3d&risl=&pid=ImgRaw&r=0"
          alt=""
        />
      </template>
    </Category>

    <Category title="游戏">
      <template slot="slots" slot-scope="infos">
        <ul>
          <li v-for="(g, index) in infos.info.games" :key="index">{{ g }}</li>
        </ul>
        <img
          src="https://ts1.cn.mm.bing.net/th/id/R-C.7bf18c5358339bf8e43c98c72a3d7a47?rik=6qvk8oHOKHsCMg&riu=http%3a%2f%2fsc.68design.net%2fphotofiles%2f201809%2fiWxCxnbfIL.jpg&ehk=NmYVwSMeRcl%2byDa7nGmn%2bN%2bkMWoNlq3ZClFBEMyu9e0%3d&risl=&pid=ImgRaw&r=0"
          alt=""
        />
      </template>
    </Category>

    <Category title="电影">
      <template slot="slots" slot-scope="infos">
        <ul slot="slots">
          <li v-for="(f, index) in infos.info.films" :key="index">{{ f }}</li>
        </ul>
        <video
          controls
          src="http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4"
        ></video>
      </template>
    </Category>
  </div>
</template>

<script>
import Category from "./components/Category";
export default {
  name: "App",
  components: { Category },
};
</script>

<style scoped>
.container {
  display: flex;
  justify-content: space-around;
}
</style>

Category组件

<template>
  <div class="category">
    <h3>{{ title }}分类</h3>
    <!-- 定义一个插槽(挖个坑,等着组件的使用者进行填充) -->
    <slot name="slots" :info="info"
      >我是一些默认值,当使用者没有传递具体结构时,我会出现</slot
    >
  </div>
</template>

<script>
export default {
  name: "Category",
  props: ["title"],
  data() {
    return {
      info: {
        foods: ["火锅", "烧烤", "小龙虾", "牛排"],
        games: ["红色警戒", "穿越火线", "劲舞团", "超级玛丽"],
        films: [
          "《教父》",
          "《拆弹专家》",
          "《你好,李焕英》",
          "《仙剑奇侠传》",
        ],
      },
    };
  },
};
</script>

<style scoped>
.category {
  background-color: rgb(192, 197, 199);
  width: 200px;
  height: 298px;
  border-radius: 5px;
}
h3 {
  text-align: center;
  background-color: rgb(235, 114, 15);
}
video {
  width: 100%;
  margin-top: 22px;
  border-radius: 5px;
}
img {
  width: 100%;
  height: 110px;
  border-radius: 5px;
  margin-top: 24px;
}
</style>

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

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

相关文章

《走进对象村2》特殊的- static

文章目录 &#x1f680;文章导读1.1static修饰成员变量1.2static修饰成员方法1.3代码块1.3.1代码块概念及分类以及不同代码块之间的运行顺序1、普通代码块2、构造代码块3、静态代码块 static存在的意义面试题&#xff1a;1、static的独特之处2、 静态变量和实例变量的区别3、静…

前端——HTML

1.html的标准结构 【1】先建立一个普通文本文档&#xff0c;将文本的后缀改为.html 【2】编辑&#xff1a;标准结构 <html> <head></head> <body> this is my first </body> </html> 最外层是标签<html>然后<head>标…

如何用 AI 练英语口语?

语言学习&#xff0c;就得靠多训练。 痛点 有的小伙伴学了很长时间的英语&#xff0c;但学到的却是「哑巴英语」&#xff0c;特点是见着外国人张不开嘴。这里面有多种因素&#xff0c;但最主要还是练得太少。语言这东西就得靠多训练。经常和外国人说话&#xff0c;语言能力很快…

HTML常用标签总结

文章目录 HTML结构HTML常见标签注释标题标签h1 - h6段落标签p换行标签br格式化标签图片标签img超链接标签a表格标签table列表标签ul ol dl表单标签select标签textarea标签无语义标签div和span HTML结构 形如&#xff1a; <body></body>这样的标签就是一个HTML标签…

15.Java基础

1.xml 1.1概述【理解】 万维网联盟(W3C) 万维网联盟(W3C)创建于1994年&#xff0c;又称W3C理事会。1994年10月在麻省理工学院计算机科学实验室成立。 建立者&#xff1a; Tim Berners-Lee (蒂姆伯纳斯李)。 是Web技术领域最具权威和影响力的国际中立性技术标准机构。 到目前为…

linux部署k8s

linux部署k8s 0、k8s的前世今生1、下载k8s2、k8s文档2.1、容器化部署的优越性2.1.1、Traditional deployment era2.1.2、Virtualized deployment era2.1.3、Container deployment era 3、安装k8s3.1、Install kubectl on Linux3.2、 0、k8s的前世今生 参考链接: https://kuber…

《基于智能手机采集的PPG信号预测血管老化》阅读笔记

目录 一、论文摘要 二、论文十问 Q1: Q1论文试图解决什么问题&#xff1f; Q2: 这是否是一个新的问题&#xff1f; Q3: 这篇文章要验证一个什么科学假设&#xff1f; Q4: 有哪些相关研究&#xff1f;如何归类&#xff1f;谁是这一课题在领域内值得关注的研究员&#xff1f…

OpenCV的highgui模块

Opencv把用于操作系统、文件系统以及摄像机等硬件设备交互的函数纳入到highgui&#xff08;High-level Graphical User Interface)模块中&#xff0c;我们可以利用该模块方便地打开窗口、显示图像、读出或写入图像相关的文件&#xff08;图像和视频&#xff09;、处理简单的鼠标…

【大数据之Hadoop】二十六、生产调优-HDFS集群压测

测试上传数据到集群和拉取数据的时间。HDFS的读写性能主要受网络和磁盘影响比较大。为了方便测试&#xff0c;将hadoop102、hadoop103、hadoop104虚拟机网络的带宽都设置为100Mbps。100Mbps/812.5M/s。 1 测试HDFS写性能 写测试原理&#xff1a;   向磁盘写测试文件&#x…

MySQL数据库——MySQL下载安装

&#xff08;1&#xff09;数据库相关概念&#xff1a; &#xff08;2&#xff09;MySQL数据库下载&#xff08;windows版&#xff09;: 下载地址&#xff1a;MySQL :: Download MySQL Installerhttps://dev.mysql.com/downloads/installer/MySQL :: Download MySQL Installer…

Python小姿势 - Python中的类型检查

Python中的类型检查 在Python中&#xff0c;类型检查是通过内置函数isinstance()来实现的。 isinstance() 函数用于判断一个对象是否是一个已知的类型&#xff0c;类似 type()。 isinstance() 与 type() 区别&#xff1a; type() 不会认为子类是一种父类类型。 isinstance() 会…

【Linux下】线程概念

文章目录 【Linux下】线程概念理解线程线程操作接口线程和进程线程和进程的关系代码验证 线程优点线程缺点 【Linux下】线程概念 理解线程 一般的书上都是这么描述线程的 线程&#xff1a;是在进程内部运行的一个执行分支&#xff0c;属于进程的一部分&#xff0c;粒度要比进…

简单搭建Fabric网络

Fabric网络的搭建分为两个阶段&#xff1a;生成网络拓扑和启动网络。在这里&#xff0c;我们假设要搭建一个具有一个orderer节点和两个peer节点的Fabric网络。 在生成网络拓扑之前&#xff0c;需要准备好以下文件&#xff1a; crypto-config.yaml&#xff1a;用于生成组织和节…

什么牌子蓝牙耳机好用不贵?国产性价比高的蓝牙耳机推荐

相较于有线耳机&#xff0c;无线蓝牙耳机更便携、功能更丰富&#xff0c;不用受到耳机孔与线的限制。那么&#xff0c;什么牌子的蓝牙耳机好用不贵&#xff1f;针对这个问题&#xff0c;我给大家推荐几款国产性价比高的蓝牙耳机&#xff0c;可以当个参考。 一、南卡小音舱Lite…

JAVA代码规范审查

JAVA代码规范审查 1. 添加必要的注释 所有的类都必须添加创建者和创建日期&#xff0c;以及简单的注释描述 方法内部的复杂业务逻辑或者算法&#xff0c;需要添加清楚的注释 一般情况下&#xff0c;注释描述类、方法、变量的作用 任何需要提醒的警告或TODO&#xff0c;也要注…

python基础语法1

基本语句 判断语句 1.if语句 if 语法格式: if 要判断的条件:条件成立时&#xff0c;要做的事情 -------------------------- 执行流程:判断条件为True就执行if的语句体.条件为False就执行if以外的代码. if 案例: age int(input(请输入年龄))print(-----开始-----) if ag…

测试遵循的原则

测试遵循的原则 软件测试是在规定的条件下对程序进行操作&#xff0c;以发现程序错误&#xff0c;衡量软件质量&#xff0c;并对其是否能满足设计要求进行评估的过程。软件测试的基本原则有助于测试人员进行高质量的测试&#xff0c;尽早尽可能多的发现缺陷&#xff0c;并负责跟…

【51单片机】:串口通信基础知识详解

学习目标&#xff1a; 串口通信的基础知识和设置详解。 学习内容&#xff1a;串口通信基础知识 并行通信&#xff1a;多条数据线将数据字节的各个位同时传送*缺点&#xff1a;1.电磁干扰 2.成本高 3.由于传输线较多&#xff0c;长距离传输成本高串口通信&#xff1a;将数据字节…

STL常用梳理——STACK、QUEUE

STL——适配器篇 1、ListSTL list 容器介绍list使用 2、适配器介绍3、Deque容器Stack、Queue适配器实现 1、List STL list 容器介绍 STL list 容器&#xff0c;又称双向链表容器&#xff0c;即该容器的底层是以双向链表的形式实现的。这意味着&#xff0c;list 容器中的元素可…

Lecture 11(Preparation):领域自适应 (Domain Adaptation)

Domain shift: Training and testing data have different distributions. Transfer learning&#xff1a;在A任务上学到的技能&#xff0c;可以被用在B任务上 Domain Adaptation的技术&#xff0c;可以看作是Transfer learning的一种 Domain Adaptation: 第一种情况&#xf…