【vue】插槽(slot)

网络建
• 阅读 1278

插槽

  1. 默认插槽
  2. 具名插槽
  3. 作用域插槽

1默认插槽

  • 数据与结构在父组件
  • 插槽在子组件

子组件

<!-- 复用的结构-->
...

<!-- 不复用的位置 -->
<slot>无插入时默认结构</slot>

<!-- 复用的结构-->
...

父组件

<Component >
    <img/>
</Component>
    <video/>
<Component >
    <h3/>
<Component >
复用组件
每个被复用的组件有一部分结构或数据不同
从父组件中将不同的数据与结构填充到子组件的插槽中

2具名插槽

  • 数据与结构在父组件中
  • 插槽在子组件中
  • 复用的组件有多个地方不同

子组件

<!-- 复用的结构 -->
...

<!-- 不复用的位置1 -->
<slot name="slot1">默认值1<slot>

<!-- 复用的结构 -->
...

<!-- 不复用的位置2 -->
<slot name="slot2">默认值2<slot>

父组件

<Component >
    <template v-slot:slot1>
        <img/>
    </template>
    <template v-slot:slot2>
        <video/>
    </template>
</Component>
    
<Component >
    <template v-slot:slot1>
        <h3></h3>
    </template>
    <template v-slot:slot2>
        <img/>
    </template>
</Component >
给每个插槽添加name属性
父组件插入的模板添加v-slot属性
无指定的模板 默认插入无name属性的插槽

3 作用域插槽

  • 结构在父组件
  • 数据与插槽在子组件
  1. 默认
    子组件

    <!-- 复用的结构-->
    ...
    
    <!-- 不复用的位置 -->
    <slot :data1="food" :data2="drink">无插入时默认结构</slot>
    
    <!-- 复用的结构-->
    ...

    父组件

    <Component >
     <!-- 对象取值 -->
     <template v-slot="data">
         <h2>{{data.data1}}</h2>
     </template>
    </Component>
     
    <Component >
     <!-- 解构取值 -->
     <template v-slot="{ data2 }">
         <h3>{{data2}}</h3>
     </template>
    </Component >
  2. 具名
    子组件

    <!-- 复用的结构-->
    ...
    
    <!-- 不复用的位置 -->
    <slot :data1="food" :data2="drink" name="slot1">无插入时默认结构</slot>
    
    <!-- 复用的结构-->
    ...
    
    <!-- 不复用的位置 -->
    <slot :data1="live" :data2="transport" name="slot2">无插入时默认结构</slot>

    父组件

    <Component >
     <template v-slot:slot1="{{ food }}">
         ...
     </template>
     <template v-slot:slot2="{{live}}">
         ...
     </template>
    </Component>
     
    <Component >
     <template v-slot:slot1="{{drink}}">
         ...
     </template>
    </Component >
v-slot:name是对具名插槽的选择
v-slot="obj"是对默认插槽的选择 简写形式
上面两种方法尽量不要同时用,可能会出现选择不明确的错误
v-slot:name="obj" 从具名插槽中接收值,在父组件中接收并编译完成再插入子组件
只要出现多个插槽,尽量使用template中的v-slot
推荐使用template的v-slot完整的写法
v-slot:default="obj"v-slot:other="obj"
不推荐使用slot="name"slot-scope="obj"
点赞
收藏
评论区
推荐文章
Chase620 Chase620
4年前
vue的8种通信方式
1.props/emit1.父组件向子组件传值下面通过一个例子说明父组件如何向子组件传递数据:在子组件article.vue中如何获取父组件section.vue中的数据articles:\'红楼梦','西游记','三国演义'\//section父组件<template<divclass"section"
海军 海军
4年前
2021前端技术面试必备Vue:(二)组件篇
上一章已经更新了Vue基础,那么本章将更新Vue中最重要的概念组件,会介绍到组件的使用,组件传值,插槽的使用,插槽的分类。当第一章基础掌握差不多了,然后再学习了组件的开发,那么你就可以开发简单的Vue项目,路由文章还没有更新,学习完Router后,就可以开发实战项目了。<sectionid"nice"datatool"mdnice编
Stella981 Stella981
3年前
ASMSupport教程4.7 生成关系运算符
<p在java中,关系运算符是很常用的,分别是&gt;,,&lt;,&gt;,&lt;,!这六种,我们按照惯例看看我们需要生成的代码:</p<divid"scid:9D7513F9C04C4721824A2B34F0212519:dfec0f1ca2ec4ebabc9b91c161fbfa47"class"wlWri
Stella981 Stella981
3年前
Linux磁盘、Ext文件系统、目录树
硬盘组成与读写硬盘,拆过机的同志应该知道就是一块小刚体嘛。拆过主机硬盘和笔记本硬盘也应该知道不同的硬盘的接口是不一样的,主机的硬盘一般会有一条线连接到主板而笔记本的硬盘直接有插槽。这个概念只是为了引起硬盘有不同的种类存在,当我们在linux系统中输出命令fdiskl的时候,大致会有设备名称等信息。其中有可能有/dev
Wesley13 Wesley13
3年前
DELL 服务器内存插槽正确插法
!(https://oscimg.oschina.net/oscnet/d5a0ed3c93430e04affbf0cd79a4f956363.jpg)系统包含24个内存插槽,分为两组(每组12个),每个处理器一组。每个12插槽组分入四个通道。在每个通道中,第一个插槽的释放拉杆以白色标记,第二个插槽的释放拉杆为黑色,第三个插槽的释放拉杆标为绿色(
Stella981 Stella981
3年前
Sentinel源码解析二(Slot总览)
写在前面本文继续来分析Sentinel的源码,上篇文章对Sentinel的调用过程做了深入分析,主要涉及到了两个概念:插槽链和Node节点。那么接下来我们就根据插槽链的调用关系来依次分析每个插槽(slot)的源码。默认插槽链的调用顺序,以及每种类型Node节点的关系都在上面文章开头分析过Sentinel源码解析一NodeSelecto
Wesley13 Wesley13
3年前
# pc端个性化日历实现
pc端个性化日历实现技术:vuevfor、slotscop插槽域需求:需要实现日历上每一天动态显示不同的信息思路:运用vue中slotscop插槽域的知识点,将个性化的代码样式放到slot中再通过slotscop获取这个插槽中的所需数据一、实现日历组件
Wesley13 Wesley13
3年前
MongoDB 范围查询
查询价格在2009000  $gt 大于   $lt  小于//查询价格2009000范围的数据db.prodgory.find({"price":{$gt:"200",$lt:"9000"}})查询给定范围数据  $in//给定范围查询db.product1.find({"categor
LinMeng LinMeng
1年前
uview瀑布流
组件/waterfall瀑布流@description这是一个瀑布流形式的组件,内容分为左右两列,结合uView的懒加载组件效果更佳。相较于某些只是奇偶数左右分别,或者没有利用vue作用域插槽的做法,uView的瀑布流实现了真正的组件化,搭配LazyLoa
LinMeng LinMeng
1年前
小程序实现瀑布流
框架:uniappuView瀑布流组件/waterfall瀑布流@description这是一个瀑布流形式的组件,内容分为左右两列,结合uView的懒加载组件效果更佳。相较于某些只是奇偶数左右分别,或者没有利用vue作用域插槽的做法,uView的瀑布流实
小万哥 小万哥
1年前
资源描述框架的用途及实际应用解析
RDF(资源描述框架)是一种用于机器理解网络资源的框架,使用XML编写。它通过URI标识资源,用属性描述资源,便于计算机应用程序处理信息。RDF在语义网上促进信息的确切含义和自动处理,使得网络信息可被整合。RDF语句由资源、属性和属性值组成。RDF文档包括&lt;rdf:RDF&gt;根元素和&lt;rdf:Description&gt;元素,后者用about属性标识资源。RDF还支持容器(如&lt;Bag&gt;、&lt;Seq&gt;和&lt;Alt&gt;)来描述集合。RDFS是RDF的扩展,提供描述类和属性的框架,而达布林核心是一组预定义属性,用于描述文档。