Vue学习笔记(八)插槽

Vue2(16) 插槽学习笔记 插槽是Vue.js中一种非常强大的功能,它允许开发者在组件中预留插槽位置,以便在父组件中使用该组件时插入自定义内容。通过具名插槽和作用域插槽,可以实现更复杂的组件布局和数据传递。在使用插槽时,需要注意插槽的定义、后备内容的设置、具名插槽的使用以及作用域插槽的数据传递等细节。 阅读详情

在使用组件时,组件开始标签和结束标签的内容会被忽视,如下代码

<div id="app">
    <my-com>I want to be shown</my-com>
</div>

<script>
    Vue.component("myCom", {
        template: "<h1>this is the template</h1>"
    })


    let vm = new Vue({
        el: "#app",
        data: {},
        methods: {}
    })
</script>

这里my-com开始标签和结束标签间的内容不会显示出来,整个标签都被模板覆盖了,如果要在html中传入开始标签和结束标签之间的内容的话,就可以使用插槽。

插槽的基本使用


插槽通过<slot>标签来实现,组件标签间的内容会出现在模板中<slot></slot>的位置。如下代码

<div id="app">
    <my-com>I want to be shown</my-com>
</div>

<script>
    Vue.component("myCom", {
        template: "<h1>this is the template  <slot></slot></h1>"
    })


    let vm = new Vue({
        el: "#app",
        data: {},
        methods: {}
    })
</script>

在页面中最终就会渲染为

<div id="app">
    <h1>this is the template  I want to be shown</h1>
</div>

可以看到标签间的内容已经被渲染到原来的<slot></slot>的位置了。

标签间的内容会以html的方式解析出来,即是说可以在标签里面放html结构。

<div id="app">
    <my-com>
        <span>I am a span</span>
    </my-com>
</div>

<script>
    Vue.component("myCom", {
        template: "<div><p>this is the template</p>  <slot></slot></div>"
    })


    let vm = new Vue({
        el: "#app",
        data: {},
        methods: {}
    })
</script>

渲染到页面后为

<div id="app">
    <div>
        <p>this is the template</p> 
        <span>I am a span</span>
    </div>
</div>

插槽的后备内容/默认值


如果要在标签内没内容时传入一个默认值,那么直接在模板中的<slot></slot>间插入内容即可。

<div id="app">
    <my-com>I want to be shown</my-com>
    <my-com></my-com>
</div>

<script>
    Vue.component("myCom", {
        template: "<div><p>this is the template</p>  <slot>I am the default value</slot></div>"
    })


    let vm = new Vue({
        el: "#app",
        data: {},
        methods: {}
    })
</script>

在页面中渲染为

<div id="app">
    <div>
        <p>this is the template</p> 
        I want to be shown
    </div> 
    <div>
        <p>this is the template</p> 
        I am the default value
    </div>
</div>

具名插槽


如果要在模板的不同位置插入不同的内容,就可以使用具名插槽,为每个位置指定具体的名称,分别插入不同的内容。

具名插槽在组件标签中使用template来包裹插槽的内容,并使用v-slot指明插槽的名称,然后在模板中的<slot></slot>中再使用name属性来指明要使用哪一个插槽。

<div id="app">
    <my-com>
        <template v-slot:first>I am the first</template>
        <template v-slot:second>I am the second</template>
        <template v-slot:third>I am the third</template>
    </my-com>
</div>

<script>
    Vue.component("myCom", {
        template: `<div>
            <h1>
                <slot name="first"></slot>
            </h1>
            <h2>
                <slot name="second"></slot>
            </h2>
            <h3>
                <slot name="third"></slot>
            </h3>
        </div>`
    })


    let vm = new Vue({
        el: "#app",
        data: {},
        methods: {}
    })
</script>

在页面中渲染为

<div id="app">
    <div>
        <h1>I am the first</h1> 
        <h2>I am the second</h2> 
        <h3>I am the third</h3>
    </div>
</div>

无名称的插槽

如果有一个template没有指明使用插槽名称,则默认使用defult作为名称

<div id="app">
    <my-com>
        <template v-slot:first>I am the first</template>
        <template v-slot:second>I am the second</template>
        <template v-slot:third>I am the third</template>
        <template>I don't have v-slot</template>
    </my-com>
</div>

<script>
    Vue.component("myCom", {
        template: `<div>
        <h1>
            <slot name="first"></slot>
        </h1>
        <h2>
            <slot name="second"></slot>
        </h2>
        <h3>
            <slot name="third"></slot>
        </h3>
        <p>
            <slot name="default"></slot>
        </p>
    </div>`
    })


    let vm = new Vue({
        el: "#app",
        data: {},
        methods: {}
    })
</script>

页面中渲染为

<div id="app">
    <div>
        <h1>I am the first</h1> 
        <h2>I am the second</h2> 
        <h3>I am the third</h3> 
        <p>   I don't have v-slot</p>
    </div>
</div>

变量控制

v-slot也可以绑定data中变量对应的内容,只要在v-slot后面的内容添加[]即可。

<div id="app">
    <my-com>
        <template v-slot:[h1]>I am the first</template>
        <template v-slot:[h2]>I am the second</template>
        <template v-slot:[h3]>I am the third</template>
    </my-com>
</div>

<script>
    Vue.component("myCom", {
        template: `<div>
    <h1>
        <slot name="first"></slot>
    </h1>
    <h2>
        <slot name="second"></slot>
    </h2>
    <h3>
        <slot name="third"></slot>
    </h3>
</div>`
    })


    let vm = new Vue({
        el: "#app",
        data: {
            h1: 'first',
            h2: 'second',
            h3: 'third'
        },
        methods: {}
    })
</script>

在页面中渲染为

<div id="app">
    <div>
        <h1>I am the first</h1> 
        <h2>I am the second</h2> 
        <h3>I am the third</h3>
    </div>
</div>

v-slot缩写

v-slot和v-bind,v-on一样,有自己的缩写"#"。使用缩写与原来渲染出来的结果是相同的。

<div id="app">
    <my-com>
        <template #:[h1]>I am the first</template>
        <template #:[h2]>I am the second</template>
        <template #:[h3]>I am the third</template>
    </my-com>
</div>

<script>
    Vue.component("myCom", {
        template: `<div>
<h1>
    <slot name="first"></slot>
</h1>
<h2>
    <slot name="second"></slot>
</h2>
<h3>
    <slot name="third"></slot>
</h3>
</div>`
    })


    let vm = new Vue({
        el: "#app",
        data: {
            h1: 'first',
            h2: 'second',
            h3: 'third'
        },
        methods: {}
    })
</script>

插槽的作用域


插槽可以使用其组件所在的父组件的data,但不可以直接使用其组件的data

<div id="app">
    <my-com>
        <!-- childStr无法正常显示,会报childStr没定义的错误 -->
        <p>{{childStr}}</p>
        <p>{{parentStr}}</p>
    </my-com>
</div>

<script>
    Vue.component("myCom", {
        template: "<div><slot></slot></div>",
        data: () => {
            return {
                childStr: "child"
            }
        }
    })


    let vm = new Vue({
        el: "#app",
        data: {
            parentStr: "parent"
        }
    })
</script>

要使用其组件中的data,可以在其父作用域中设置一个插槽prop,在组件的模板中将组件的data中的值作为slot的特性绑定到父作用域中。设置插槽prop可以使用v-slot(#),与上面指明哪一个slot使用“:”不一样,这里使用的是“=”。

<div id="app">
    <my-com>
        <template v-slot="slotProps">{{slotProps.childStr}}</template>
    </my-com>
</div>

<script>
    Vue.component("myCom", {
        template: "<div><slot :childStr='childStr'></slot></div>",
        data: () => {
            return {
                childStr: "child"
            }
        }
    })


    let vm = new Vue({
        el: "#app",
        data: {
            parentStr: "parent"
        }
    })
</script>

解构插槽

在设置插槽prop时,可以采用解构插槽的方法,这样会更为便利,减少了prop名称的设置

<div id="app">
    <my-com>
        <template v-slot="{childStr}">{{childStr}}</template>
    </my-com>
</div>

<script>
    Vue.component("myCom", {
        template: "<div><slot :childStr='childStr'></slot></div>",
        data: () => {
            return {
                childStr: "child"
            }
        }
    })


    let vm = new Vue({
        el: "#app",
        data: {
            parentStr: "parent"
        }
    })
</script>

使用解构插槽时,可以设置默认值,在没有该值时使用默认值,直接使用=即可。

<div id="app">
    <my-com>
        <template v-slot="{childStr='default value'}">{{childStr}}</template>
    </my-com>
</div>

<script>
    Vue.component("myCom", {
        template: "<div><slot :childStr='childStr'></slot></div>"
    })


    let vm = new Vue({
        el: "#app",
        data: {
            parentStr: "parent"
        }
    })
</script>

页面最后渲染为

<div id="app">
    <div>default value</div>
</div>

可以看到最后是使用了默认值。

时间序列聚类在股票市场分析中的实践与优化 时间序列聚类是一种面向动态行为建模的无监督学习方法,其核心在于通过语义感知的距离度量(如DTW)捕捉价格形态的相位弹性与结构相似性,而非依赖静态数值或标签驱动。相比K-Means等传统算法,它能有效缓解金融时序中普遍存在的噪声敏感、对齐失效与形态失真问题,从而提升聚类结果的市场可解释性与策略鲁棒性。该技术已广泛应用于市场状态识别、行业行为分群、异常交易监测等场景,并成为构建可验证量化分析框架的关键预处理层。本文聚焦A股真实行情数据,详解从原始OHLCV到可聚类时间序列的完整链路,涵盖DTW距离计算、层次聚类 阅读详情

相关推荐

HC32F460 SPI DMA 实现高效TFT屏幕刷新的实战解析

本文针对HC32F460 MCU驱动TFT屏幕时刷新卡顿的问题,深入解析了SPI DMA技术的实战应用。通过对比传统查询模式与DMA模式的性能数据,详细阐述了如何配置SPI与DMA资源、构建核心驱动框架,并提供了避坑指南与进阶优化思路,最终实现高效、流畅的屏幕刷新,显著降低CPU占用率。

weixin_29163797的博客 152

vue 笔记(八)插槽

可动态拔插。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <body> <!--view层--> <div id="app"> <todo> <todo-title slot="todo-title" v-bind:

孤注一掷的博客 296

基于GEC6818开发板的C/C++贪吃蛇小游戏

f.开始游戏(进入游戏,并没有马上开游戏,需要点击播放才能开始)2.相关宏,全局变量(可以根据自己需要进行修改)k.显示文字前的相关初始化。k.自定义font.h文件。1.需要的主要头文件。l.在开发板上显示字1。m.在开发板上显示字2。a.显示固定大小图片。h.线程1:获得坐标。

2301_77273301的博客 2133

前端八股文 插槽的使用场景

官方解释:Vue 实现了一套内容分发的 API,将 元素作为承载分发内容的出口。大白话:插槽就是子组件中的提供给父组件使用的一个占位符,用<slot> 表示,父组件可以在这个占位 符中填充任何模板代码,如HTML、组件等,填充的内容会替换。

Ruiqi8的博客 311

Unity安卓打包实战:SDK与JDK配置全攻略

本文详细介绍了Unity安卓打包过程中SDK与JDK的配置方法,包括工具下载、安装步骤、环境变量设置及常见错误排查。通过实战指南帮助开发者快速完成Unity安卓打包环境搭建,提升开发效率。

weixin_30338481的博客 420

【Ragflow】9.问答为什么比搜索响应慢?从源码角度深入分析

前几天看到有群友提到一个现象:Ragflow的搜索界面的问答速度很快,但聊天界面的问答速度很慢,究竟是什么原因?在深入挖掘源码之后,逐渐发现了问题的答案。

兴趣使然的创作者 2907

Vue学习(8)插槽slot

demo代码,不是很理解,先放着 <!DOCTYPE html> <html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml" xmlns:v-on="http://www.w3.org/1999/xhtml"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body&gt

qq_43414301的博客 2万+

基于STM32设计的老人防摔倒报警设备(OneNet)_65

本文设计了一种基于STM32单片机的智能老人防摔倒报警设备。该系统结合MPU6050陀螺仪传感器实时监测老人的姿态变化,检测摔倒事件;通过SIM800C通信模块发送短信通知紧急联系人,并将GPS定位信息上传至云端平台,确保家属能够及时了解老人的准确位置。

1万+

Vue -- 插槽

文章目录插槽1. 插槽2. 体验插槽的基础用法2.1 没有预留插槽组件标签内的内容会被丢弃2.2 后备内容3. 具名插槽3.1 为具名插槽提供内容3.2 具名插槽的简写形式4. 作用域插槽4.1 解构作用域插槽的 Prop把information的数据解构出来4.2 声明作用域插槽4.3 使用作用域插槽 插槽 1. 插槽 插槽(Slot)是 vue 为组件的封装者提供的能力。允许开发者在封装组件时,把不确定的、希望由用户指定的部分定义为插槽。 可以把插槽认为是组件封装期间,为用户预留的内容的占位符。 2

emmmm..... 1万+

气象大模型光伏功率预测中的应用:从短期,超短期,中长期的实现与开源代码详解

本文详细介绍了基于大模型的光伏功率预测方法,涵盖超短期(15分钟-1小时)、短期(1-6小时)和中长期(1天-1周)预测。文章首先讨论了数据准备与预处理,包括历史功率、气象、天文和电站特性数据的收集与特征工程。随后,针对不同预测需求,提出了多种深度学习模型:超短期预测采用1DCNN-LSTM混合模型,短期预测使用Transformer模型,中长期预测则通过多尺度特征提取模型和概率预测方法处理不确定性。文章还提供了模型训练、评估、部署和优化的完整流程,并开源了代码实现。未来研究方向包括结合数值天气预报、开发时

专注AI大模型,软件混淆,授权 1589

面经-2023-禾赛-FPGA工程师

面经-2023-禾赛-FPGA工程师

w0shishabi的博客 2970

Vue 中插槽(Slot)用法

通过默认插槽、具名插槽、作用域插槽、动态插槽名、插槽后备内容以及插槽的简写语法等用法,Vue.js提供了灵活且强大的组件化解决方案。如果父组件没有为某个插槽提供内容,那么子组件的模板中该插槽的位置将显示为该插槽的默认内容(如果有的话),或者简单地留空。插槽是Vue.js中非常重要的一个概念,它允许父组件向子组件的模板中插入内容,从而实现组件内容的分发和组合。在实际开发中,根据具体的需求和场景选择合适的插槽用法,可以构建出高效、可维护的Vue.js应用。子组件中的插槽如何传统给父组件用。为这些插槽插入内容。

qq_20236937的博客 1万+

基于STM32、HAL库的ZMOD4510AI4R气体传感器驱动程序设计

ZMOD4510AI4R是Renesas公司推出的一款数字空气质量传感器,主要用于检测臭氧(O₃)和总挥发性有机化合物(TVOC)浓度。(status & 0x80)) // 检查数据就绪位。// 等待测量完成 (实际应用中应该使用非阻塞方式)// 转换为ppb (简化转换,实际应根据传感器文档校准)* @param hzmod: ZMOD4510句柄。* @param tvoc: TVOC浓度(ppb)* @param ozone: 臭氧浓度(ppb)* @param hi2c: I2C句柄。

corlin6688的博客 312

Vue学习笔记(八)--- 动态组件和组件插槽

一、动态组件 1、概念 ​ 动态组件是指在页面的某个位置,动态的切换不同的组件,显示不同的组件内容。Vue 为开发者提供了一个内置的 组件,专门用来实现动态组件的渲染。 2、基本使用 <template> <div class="app-container"> <button @click="comName = 'Left'">展示 Left</button> <button @click="comName = 'Right'"&

weixin_45092437的博客 1097

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

vue学习笔记(八)——Vue组件-进阶(插槽、自定义指令)

准备MyTable.vue组件 – 内置表格, 传入数组循环铺设页面, 把对象每个内容显示在单元格里准备UseTable.vue – 准备数据传入给MyTable.vue使用例子:我想要给td内显示图片,需要传入自定义的img标签在MyTable.vue的td中准备占位,但是外面需要把图片地址赋予给src属性,所以在slot上把obj数据绑定。

weixin_56370772的博客 356

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

vue插槽之插槽的用法及作用域插槽详解

插槽是vue中一个很有用的工具。本篇文章将讲解vue插槽的基本用法,并详细讲解作用域插槽。希望能对读者有所帮助!

zxdznyy的博客 2万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【Vue插槽详解】

个人对Vue中插槽的见解,详细的介绍了不同种类的插槽方法,以及不同类型的插槽作用

小田是个程序员的博客欢迎你的到来呀~ 3万+

Vue2 插槽的使用【默认插槽、具名插槽、作用域插槽】

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

weixin_52212950的博客 1万+

VUE的插槽

1. 什么是插槽 插槽(slot)是 vue 为组件的封装者提供的能力。允许开发者在封装组件时,把不确定的、希望由用户指定的部分定义为插槽。 可以把插槽认为是组件封装期间,为用户预留的内容的占位符。 2. 体验插槽的基础用法 声明一个插槽区域 vue 官方规定:每一个 slot 插槽,都要有一个 name 名称 如果省略了 slot 的 name 属性,则有一个默认名称叫做 default 在封装组件时,可以通过 <slot> 元素定义插槽,从而为用户预留内容占位符。示例...

酷爱前端的小陈博客 3万+

VueJS 之插槽

在对组件进行封装时,我们可能需要提供一个接口,使得组件的使用者可以向该组件提供模板或其他组件以供当前组件使用,而这个接口就是插槽。在为插槽命名后,你可以通过插槽的名称向对应的插槽提供内容。如果你需要向插槽的使用者提供一些数据,那么你可以通过作用域插槽的方式向插槽的使用者提供数据。在对组件进行封装时,我们可能需要提供一个接口,使得组件的使用者可以向该组件提供模板或其他组件供当前组件使用,而这个接口就是插槽。父组件模板中的表达式只能访问父组件的作用域,子组件模板中的表达式只能访问子组件的作用域。

两个月亮 1166

Vue3 slot插槽——(默认插槽、具名插槽、作用域插槽)

一、认识插槽Slot 在开发中,我们会经常封装一个个可复用的组件: 前面我们会通过props传递给组件一些数据,让组件来进行展示; 但是为了让这个组件具备更强的通用性,我们不能将组件中的内容限制为固定的div、span等等这些元素; 比如某种情况下我们使用组件,希望组件显示的是一个按钮,某种情况下我们使用组件希望显示的是一张图片; 我们应该让使用者可以决定某一块区域到底存放什么内容和元素; 举个栗子:假如我们定制一个通用的导航组件 - NavBar 这个组件分成三块区域:左边-中间-右边,每块区域的

zep 2万+

VueJS中的slot插槽

VueJS中的slot插槽语法是定义组件不可获取且非常重要的语法,本篇文章将介绍一下VueJS中slot的学习笔记。 在Vue2.6.0的版本中,Vue团队为具名插槽和作用域插槽引入了一个新的统一语法(v-slot)指令。它取代了slot和slot-scope,但是旧的语法没有被移除 插槽内容 Vue实现了一套内容分发API,这套API的设计灵感源自Web Components规范草案,将&l...

k19970320j的博客 1003

Vue插槽

Vue插槽

我的身体只需要很少的粮食就能养活;而我的灵魂却非常地贪婪,需要日月星辰、山川湖泊和大自然的滋养。 2万+

Vue2中插槽使用——默认插槽、具名插槽、作用域插槽

Vue中插槽使用——默认插槽、具名插槽、作用域插槽插槽(slot)默认插槽具名插槽作用域插槽 插槽(slot) 作用:让父组件可以向子组件指定位置插入html结构,也是一种组件间通信的方式,适用于 父组件 ===> 子组件 分类:默认插槽、具名插槽、作用域插槽 默认插槽 category.vue <template> <div class="category"> <h3>{{title}}分类</h3> <!-- 定义一个插槽

Concise200的博客 1万+

Vue插槽详解 | 什么是插槽?

作者 | Jeskson 来源 | 达达前端小酒馆 什么是插槽?插槽的指令为v-slot,它目前取代了slot和slot-scope,插槽内容,vue实例一套内容分发的api,将slot元素作为承载分发内容的出口。 组件的书写: <my-link url="/profile"> dada </my-link> 运用组件模板,可以在里面书写: <a v-bind...

程序员哆啦A梦,蓝胖子 1万+

vue slot插槽——vue2、vue3默认插槽、具名插槽使用

不管是vue2还是vue3的插槽,他们都分为两种:默认插槽和具名插槽。 插槽的优点就是,只需要摆放正确插槽出口的位置(样式调整好),定义插槽内容的顺序在组件中可以随意,但是同名的插槽内容总是会覆盖上一个插槽内容(vue2中)。 什么是默认插槽?什么是具名插槽? slot标签不指定name属性的时候就是默认插槽,反之就是具名插槽。在定义插槽内容的时候,所有不指定插槽名称的内容,都会被输出到默认插槽的位置,反之也是一样。 vue2中插槽内容定义:在vue2.6.0之后,使用 v-slot或者语法糖#

扶摇的博客 4693
上一篇: LeetCode 60.第k个排列 Java实现
下一篇: canvas+js实现简单的画图工具
前端小黑
博客等级 码龄9年 148粉丝 222原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值