最近有小伙伴询问Vue中插槽的使用,或者有些对插槽比较陌生的有比较想用的,这里我就针对Vue的插槽使用方式进行简单的讲解,其实对于插槽最全的还要属官方文档,但是有些小伙伴就是不爱看官方文档,那么就来看下我这边对插槽基础使用的叙述吧,希望对你有用!!!
首先我们先了解插槽的分类,插槽分为默认插槽(这个叫法可能有不一样的,但是都是一个东西,我这比较习惯成为默认插槽)、具名插槽和作用域插槽。下边将对这几个插槽的基础用法进行简单实例,讲解谈不上就是基础的使用用法让你更加便捷的使用。

默认插槽

默认插槽顾名思义就是默认中的,默认的插槽为直接写在子组件标签内部的,在子组件中用slot标签接收,这里的插槽使用方式为vue在2.6.0及之后版本的使用方式,包括后边具名和作用域的都是如此!!!
还是老规矩,话不多说上代码,用代码来讲解感觉是最使用的,从代码中理解也是最有效的,如果看不明白代码敲起来试一试会好很多:
插槽的代码都分为父组件代码和子组件代码,这样演示插槽更为直白。

Father.vue 默认插槽父组件
<template><div class="conteiner"><!-- 默认插槽 - 父组件 --><h2>这是默认插槽的父组件</h2><hr><p>下边是调用子组件,以及子组件的插槽使用</p><p style="color: red;">基础的插槽,没有插槽的名字基本可以随意使用,直接放入组件标签内部,在子组件中用slot组件接收即可,这也是vue的插槽在2.6.0之后的使用方式,比之前的使用方式更加便捷和高效</p><son>这是一段插槽的内容<p>直接由插槽传入</p><hr></son></div>
</template><script>
import Son from './Son.vue';
export default {components: {Son,},
}
</script>
<style lang="scss" scoped>
</style>
Son.vue 默认插槽子组件
<template><div><!-- 基础插槽 - 子组件 --><h3>基础插槽 - 这里是子组件</h3><div style="color: #1a84d6;"><p>子组件中使用插槽,写一个slot标签,就是一个一个引用,理论可以无限使用</p><slot></slot><slot></slot><slot></slot></div></div>
</template><script>
export default {}
</script><style lang="scss" scoped>
</style>

代码中的文章请注意查看,一些描述信息都在代码中展示了,方便学习

具名插槽

根据名字可以得知,这是拥有名字的插槽,有了名字就方便使用了,那一部分用到那一部分不会冲突。

Father.vue 具名插槽父组件
<template><div class="conteiner"><h2>这是具名插槽 - 具名插槽父组件</h2><p>具名插槽子组件调用,以及具名插槽的使用</p><hr /><div><son><p style="color: #f00;">下边是具名插槽的内容,这个不带名字的不会被具名插槽使用,现在的具名插槽在2.6.0后必须要在template标签中,且要带有v-slot,否则也会被认为是默认插槽。如:</p><template>默认插槽</template><template v-slot:header>我是具名插槽,header的内容</template><template #content><p style="color: blue;">此外, 具名插槽的写法,也有了类似属性和事件的简便写法,直接用 # 号来代替 v-slot: 这样更加方便了对插槽的应用</p></template></son></div></div>
</template><script>
import Son from './Son.vue';
export default {components: {Son},
}
</script><style lang="scss" scoped>
</style>
Son.vue 具名插槽子组件
<template><div><h3>这是具名插槽 - 子组件</h3><p>子组件中具名插槽的内容</p><div><h4>首先用默认插槽的方式获取一下看看</h4><p>应该可以看到插槽的内容只有非具名插槽部分的内容</p><slot></slot><h4>然后是具名插槽内容的使用</h4><slot name="header"></slot><hr><h4>具名插槽的简便写法在组件内部通样使用</h4><slot name="content"></slot><hr><h4>同样具名插槽也可以重复使用</h4><slot name="content"></slot></div></div>
</template><script>
export default {}
</script><style lang="scss" scoped>
</style>

其实默认插槽也是具名插槽的一种,只是名字为default在使用中省略了而已,在后边作用域的代码中我们会看到对他们的描述。

作用域插槽

作用域插槽的作用域为当前的所处的vue实例环境,正常在父组件中标签内部都是父组件的环境,可以直接使用父组件data等的信息,但是插槽作为到子组件中展示的内容,有时候我没又需要一些子组件中的data数据之类的,利用父子组件传值也可以但是相对麻烦,插槽则提供了一种更好的方式,老版本(即为2.6.0之前的)中使用slot-scope来实现,新版本中的使用为更加的方便。

Father.vue 作用域插槽父组件
<template><div class="conteiner"><h2>这是作用域插槽 - 作用域插槽父组件</h2><p style="color: #f00;">作用域插槽为在插槽中,为父元素的环境,想使用子组件环境中的变量,算是插槽的传值方式</p><p>作用域插槽子组件调用,以及作用域插槽的使用</p><hr /><div><son><template v-slot="sonMsgProp"><h3>首先是默认插槽</h3><div>在父组件中的信息:{{msg}}</div><div>这是子组件中的信息: {{sonMsgProp.sonMsg}}</div></template><template #nameSlot="sonMsgProp"><h3>然后是具名插槽</h3><p>具名插槽的简单使用</p><div>在父组件中的信息:{{msg}}</div><div>这是子组件中的信息: {{sonMsgProp.sonMsg}}</div></template><template #userInfo="{userInfo, jobInfo, familyInfo={members: '未知'}, lookInfo: goddesInfo}"><h3>传入多个参数</h3><p>传入多个参数,可以使用解构的方式传入,当然也可以设置默认值和设置别名,在传入的值不存在时候会用默认的值</p><dl><dt>个人信息</dt><dd>姓名:{{userInfo.name}}</dd><dd>年龄:{{userInfo.age}}</dd><dd>已婚:{{userInfo.isWeading}}</dd></dl><dl><dt>工作信息</dt><dd>工作:{{jobInfo.work}}</dd><dd>工龄:{{jobInfo.workAge}}</dd><dd>格言:{{jobInfo.motto}}</dd></dl><dl><dt>家庭情况</dt><dd>家庭成员:{{familyInfo.members}}</dd></dl><dl><dt>身体情况</dt><dd>升高:{{goddesInfo.height}}</dd><dd>体重:{{goddesInfo.weight}}</dd></dl></template></son></div></div>
</template><script>
import Son from './Son.vue';
export default {components: {Son,},data () {return {msg: '这是父组件中的信息'}},
}
</script><style lang="scss" scoped>
</style>
Father.vue 作用域插槽子组件
<template><div><h3>这是作用域插槽 - 子组件</h3><p>作用域插槽内容展示部分</p><div><h4>默认插槽,其实默认插槽也是name="default"的一个具名插槽的简写</h4><slot :sonMsg="sonMsg"></slot><hr><slot name="nameSlot"></slot><hr><h4>多个参数</h4><slot name="userInfo":userInfo="{name: name, age, isWeading}":jobInfo="{work, workAge, motto}":lookInfo="{height, weight}"></slot></div></div>
</template><script>
export default {data () {return {sonMsg: '这是子组件中的内容信息',name: '赵二丫',age: 28,isWeading: 'No',work: "程序员",workAge: "n多年",motto: "地球不爆炸,我们不放假",height: '165cm',weight: '100kg'}},
}
</script><style lang="scss" scoped>
</style>

插槽的使用多是在封装组件时候的使用,使封装的组件使用起来扩展性更加方便和更加的好用。


以上就是对Vue插槽使用的描述和实例,作者确实有点懒没有将代码每一步分解一下,不过里边的文字描述相信你可以理解的。
如有疑问可以留言,也可以到QQ群一起探讨:
QQ群1: 657011407, QQ群2: 492593055,也可以到微信找我 shenzhipeng1023

Vue插槽的使用和插槽的传值操作相关推荐

  1. vue的组件/data的参数/组件传值/插槽/侦听器/生命周期钩子函数

    目录 组件结构 组件的命名规则: 组件的data参数 <font color='red'> 组件的父子传值prop(通信) <font color='red'>组件的子--&g ...

  2. 简单的了解下关于 VUE 的动态组件和插槽

    组件进阶-props校验 props校验 普通格式:props: ["propA", "propB"].没有类型检查 高阶格式: props: {     // ...

  3. 【Vue】—解构插槽 Prop以及具名插槽的缩写

    [Vue]-解构插槽 Prop以及具名插槽的缩写

  4. Vue默认插槽、具名插槽、作用域插槽及使用作用域插槽删除列表项

    Vue默认插槽.具名插槽.作用域插槽及使用作用域插槽删除列表项 1. 默认插槽 父组件标签内写的所有内容都放在插槽中 父组件: <h1>我是父组件</h1><base-b ...

  5. Vue知识点总结(16)——具名插槽(超级详细)

    上节我们了解了一下插槽的概念和用途,并且详细演示了一下匿名插槽的使用. 这期我们的任务是具名插槽. 从名字我们就可以看出区别,一个是匿名,一个是具名. 我们就不详细说插槽概念的东西了,直接演示具名插槽 ...

  6. VUE学习(二十)、插槽

    VUE学习(二十).插槽 一.默认插槽 1.Category.vue <template><div class="category"><h3>{ ...

  7. 在 Vue 中,如何从插槽中发出数据

    作者:Michael Thiessen 译者:前端小智 来源:medium 点赞再看,微信搜索 [大迁世界] 关注这个没有大厂背景,但有着一股向上积极心态人.本文 GitHub https://git ...

  8. 【vue】组件中的插槽

    一.什么是插槽: <slot></slot> 插槽:预留的位置,父组件在使用时在组件标签中间写的内容,会填充到slot的位置 即使用组件时,可以往插槽中传递内容 二.插槽分类 ...

  9. 【Vue】ref引用,插槽

    一.ref 什么是ref? ref用来辅助开发者在不依赖于jQuery 的情况下,获取DOM元素或组件的引用. 每个vue的组件实例上,都包含一个$refs对象,里面存储着对应的DOM元素或组件的引用 ...

最新文章

  1. 德国市占率第一的科沃斯携最新扫地机器人亮相IFA展
  2. C++ pthread
  3. OC中使用 static 、 extern、 const使用
  4. mybatis和hibernate的区别---Mybatis的学习笔记(四)
  5. 网页获取客户端IP的两种方法
  6. c# mysql executenonquery_C#中ExecuteNonQuery()返回值注意点分析
  7. java socket 判断是否断开_Linux Socket:如何在客户端程序中检测断开的网络?
  8. jquery手机横屏竖屏判断显示
  9. 无监督学习之稀疏编码,自编码
  10. 网站SQL注入漏洞检测
  11. 10.2 校内集训 解题报告
  12. Python快速实现视频播放器
  13. [BZOJ1975]HH去散步 图论+矩阵
  14. 【完结】囚生CYの备忘录(20221121-20230123)
  15. 通过快递鸟如何接入圆通速递电子面单
  16. 在springboot中导入spring-web相关包导致的错误经验(一)
  17. 乐鑫ESP32移植LVGL 7.10
  18. 如何安装cygwin
  19. 刘易远:一直讲干货你的业绩就会好吗?
  20. 18-----BBS论坛

热门文章

  1. python 多mic录音WASAPI
  2. 开源社区普遍存在的几个观点之我见(1)开源的价值在哪里和(2)开源是不是商业...
  3. 周杰伦等名人网站频被挂马 粉丝上网需警惕
  4. 程序设计与算法三~C++面向对象程序设计~北大郭炜MOOC学习笔记~第三章:类和对象进阶(新标准C++程序设计)
  5. python用递归方式实现最大公约数_Python - 最大公约数算法
  6. 董导微博rust视频_如何评价综艺节目《歌手2019》第十一期?
  7. 通信端口感叹号_PCI简易通讯控制器有黄色感叹号怎么办?
  8. 下载钉钉直播回放视频
  9. 开心消消乐在屏幕中向下移动的完整代码
  10. 计算机组成原理南阳理工学院教务管理系统,南阳理工学院教务管理系统使用暂行办法...