一,插槽的基础概念


在之前使用组件的时候,就是直接使用这个自定义的标签,而没有在里面增加内容。
例如:

Vue.component('test-tom',{data:function(){return {num:0}},template:`<div><div>TOM:{{num}}</div></div>`})var vm= new Vue({el:'#app'})
     <div id="app"><test-tom>这里没有信息</test-tom></div>


也就是这中间如果还想增加一些html结构,或者说是内容,则显示不出来,为了解决这一问题,又出现了组件插槽的概念,实际上就是在模板字符串中预留一个插槽,如果有额外的html结构,就可以插入到这里。

Vue.component('test-tom',{data:function(){return {num:0}},template:`<div><div>TOM:{{num}}</div><slot></slot></div>`})var vm= new Vue({el:'#app'})
<div id="app"><test-tom>这里没有信息</test-tom></div>


因为插槽是规定的,所以只能用
值得注意的是,slot里面还可以写默认参数,也就是使用自定义标签时,如果没有参数,则页面会显示默认参数:

<div id="app"><test-tom></test-tom></div><script type="text/javascript" src="js/vue.min.js"></script><script type="text/javascript">Vue.component('test-tom',{data:function(){return {num:0}},template:`<div><div>TOM:{{num}}</div><slot>这是定义的默认参数</slot></div>`})var vm= new Vue({el:'#app'})</script>

二,具名插槽的用法

在上文中,如果有思考就会发现,插槽的作用让组件可以增加一些自定义的html结构,以适应不同的业务需求,就像机械设计一样,比如滚珠丝杠的设计,螺母上的法兰有无,安装孔的位置,就需要对应不同的客户需求做出一定的变更。
但是,slot插槽存在巨大的局限性,它只有一个!也就是说,只能限定在固定的地方做出修改,这太low了,于是就有了具名插槽。
实际上模板字符串中定义多个插槽,使用自定义标签时,需要在哪个插槽中添加内容,就使用哪个插槽!

<div id="app"><test-tom><button slot="first">自行添加的按钮,放在定义名字的slot中</button>这是定义的默认参数会放到不定义名字的slot中</test-tom></div><script type="text/javascript" src="js/vue.min.js"></script><script type="text/javascript">Vue.component('test-tom',{data:function(){return {num:0}},template:`<div><div>TOM:{{num}}</div><slot></slot><input type="text" /><slot name="first"><slot></div>`})var vm= new Vue({el:'#app'})</script>

三,作用域插槽

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title><link rel="stylesheet" type="text/css" href="css/base.css"/><style type="text/css">#app{width: 20%;margin: 200px auto;border: 1px solid #ccc;line-height: 30px;padding: 20px;}</style></head><body><div id="app"><fruit-list :list="list"><template slot-scope='slotprops'><!-- 通过template的slot-scope获取 子组件传过来的数据,存在slotprops对象中 --><strong v-if='slotprops.info.id==3' class="current">{{slotprops.info.name}}</strong><span v-else>{{slotprops.info.name}}</span></template></fruit-list></div><script type="text/javascript" src="js/vue.min.js"></script><script type="text/javascript">Vue.component('fruit-list',{props:['list'],template:`<div><li :key='item.id' v-for='item in list'><slot :info='item'></slot></li></div>`//通过:info='item把数据传递给父组件})var vm= new Vue({el:'#app',data:{list:[{id:1,name:'apple'},{id:2,name:'orange'},{id:3,name:'banana'}]}})</script></body>
</html>

vue组件化开发学习笔记-3-组件插槽相关推荐

  1. 四、Vue组件化开发学习笔记——父子组件通信,父级向子级传值(props),子级向父级传值(自定义事件),slot插槽

    一.父子组件的通信 在上一篇博文中,我们提到了子组件是不能引用父组件或者Vue实例的数据的. 但是,在开发中,往往一些数据确实需要从上层传递到下层: 比如在一个页面中,我们从服务器请求到了很多的数据. ...

  2. 三、Vue组件化开发学习笔记——组件化的基本步骤、全局组件和局部组件、父组件和子组件、注册组件的语法糖、模板分离写法、组件的数据存放

    一.什么是组件化? 人面对复杂问题的处理方式: 任何一个人处理信息的逻辑能力都是有限的 所以,当面对一个非常复杂的问题时,我们不太可能一次性搞定一大堆的内容. 但是,我们人有一种天生的能力,就是将问题 ...

  3. Vue.js-Day02-PM【组件化开发(全局注册组件、局部注册组件、案例)、组件的配置选项、轮播图实例(左右切换按钮、底部导航栏、定时器、鼠标移入-图片静止)】

    Vue.js实训[基础理论(5天)+项目实战(5天)]博客汇总表[详细笔记] 目   录 4.组件化开发 4.1.组件的注册 全局注册 局部注册(只能在当前整个Vue实例的范围内才可以使用) 使用组件 ...

  4. Uniapp零基础开发学习笔记(5) -组件入门及容器组件使用

    Uniapp零基础开发学习笔记(5) -组件入门及容器组件使用 按照官网教程学习使用组件,并且重点把容器组件的应用进行了练习. 1.官网关于组件的介绍 组件是视图层的基本组成单元,是一个单独且可复用的 ...

  5. 组件化开发之如何封装组件

    自从React,Vue等前端框架在市面上大量使用之后,组件化开发逐渐成为了前端主流开发方式,今天我就在这里给大家分享一下在我们平时的开发中我们自己应该如何去封装组件.主要从以下三个方面给大家讲解: 什 ...

  6. 我的react组件化开发道路(二) 分页 组件开发

    2019独角兽企业重金招聘Python工程师标准>>> 上一篇文章主要写了关于react组件化开发的一些基本配置,慢慢的深入到每个组件的详细介绍中,今天我们就来分享react的分页组 ...

  7. 【Vue 组件化开发 三】父组件给子组件传递数据、组件通信(父传子、子传父)、父访问子(children、ref)、动态组件(is、component)

    目录 一.前言 完整内容请关注: 二.父组件给子组件传递数据 1.使用props属性,父组件向子组件传递数据 1.使用组件的props属性 2.向cmessage对象传值 2. props属性使用 1 ...

  8. Vue全家桶之组件化开发

    作者 | Jeskson 掘金 | https://juejin.im/user/5a16e1f3f265da43128096cb 学习组件化开发,首先掌握组件化的开发思想,组件的注册方式,组件间的数 ...

  9. Vue.js教程-组件化开发

    Vue.js教程-组件化开发 前言 Vue组件化 什么是组件化 Vue单页面开发的解释 组件化思想 组件的使用 原理 实际开发中的使用-父子组件 父子组件传递数据 父传子-props用法 子传父-th ...

  10. Vue组件化开发 - 非常详细,不要错过哦~

    源码示例链接:https://pan.baidu.com/s/1NEYDmLl2K7nNa-AKWtJqVA 提取码:2c7a 目标 能够知道组件化开发思想 能够知道组件的注册方式 能够说出组件间的数 ...

最新文章

  1. LeetCode简单题之最长的美好子字符串
  2. 查看linux是多少位的
  3. 字节跳动 ClickHouse 在实时场景中的应用和优化实践
  4. 理解Vue深度响应原理
  5. java伪协议_JavaScript中伪协议 javascript:使用探讨
  6. mc服务器村民交易修改,【原创】【教程】MCPE自定义村民交易内容
  7. Microsoft Windows 7.0 build 7000 NAP测试--健康状态检测验证报告
  8. github果然强大
  9. Ubuntu20.04搭建ftp服务(亲测通过)
  10. Yearn核心开发者:YFI铸币提案几乎准备就绪
  11. [转] MySQL树结构递归查询处理
  12. GGally与pairs相关关系图_史上最全(二)
  13. poj 3104 Drying (二分)
  14. 仅用 480 块 GPU 跑出万亿参数,中文最大规模多模态预训练模型发布
  15. 暴风影音II升级进程stormliv.exe持续不停的调用WSPSelect()函数,它想干啥?
  16. 基于51单片机和 ADC0808 ADC0809的自动数字电压表proteus仿真程序设计
  17. hopfield tsp matlab,TSP问题—Hopfield神经网络算法
  18. 微软私有云系列 ----SQL 云部署
  19. F28335的ADC模块
  20. 服务器显示checkin,CheckIn 方法 - Microsoft Word Visual Basic 参考

热门文章

  1. 超级易懂的非递归实现二叉树三种遍历(与网上都不一样)
  2. linux 桌面共享xfce,漂亮而且轻量级的桌面-----xfce安装
  3. 经典的出入库算法(C#实现)
  4. 关于在GridControl中添加GridLookUpEdit绑定数据
  5. iOS NSURLSession 指南
  6. 比赛-6月Round1
  7. [Selenium+Java] Selenium Framework: Keyword Driven Hybrid
  8. 值栈ValueStack的原理与生命周期
  9. 要开始算法了 什么顺序呢?
  10. Windows Phone开发(25):启动器与选择器之WebBrowserTask 转:http://blog.csdn.net/tcjiaan/article/details/7404770...