vue插槽slot的简单理解与用法实例分析


Posted in Javascript onMarch 14, 2020

本文实例讲述了vue插槽slot的简单理解与用法。分享给大家供大家参考,具体如下:

vue中插槽的使用非常广泛,本文就插槽的使用和理解简单总结。

从字面理解插槽是预先插入一个代码空间,用于后期塞入数据。

插槽分类

匿名插槽     ------------------   匿名的代码空间

具名插槽     ------------------   带有命名的代码空间

作用域插槽 -------------------   带有数据的代码空间

插槽使用示例

匿名插槽

说明在组件中先定义预留的代码空间,组件在使用时直接写入代码

<template>
 <div class="child">
  <h3>这里是子组件</h3>
  <slot></slot>
 </div>
</template>

使用:

<template>
 <div class="father">
  <h3>这里是父组件</h3>
  <child>
   <div class="tmpl">
    <span>菜单1</span>
    <span>菜单2</span>
    <span>菜单3</span>
    <span>菜单4</span>
    <span>菜单5</span>
    <span>菜单6</span>
   </div>
  </child>
 </div>
</template>

具名插槽

预先在组件中定义一个带有名称的代码空间,使用组件时用:slot绑定名称

<template>
 <div class="child">
 // 具名插槽
 <slot name="up"></slot>
 <h3>这里是子组件</h3>
 // 具名插槽
 <slot name="down"></slot>
 // 匿名插槽
 <slot></slot>
 </div>
</template>

使用:

<template>
 <div class="father">
 <h3>这里是父组件</h3>
 <child>
  //插槽up
  <div class="tmpl" slot="up">
  <span>菜单1</span>
  <span>菜单2</span>
  <span>菜单3</span>
  <span>菜单4</span>
  <span>菜单5</span>
  <span>菜单6</span>
  </div>
  //插槽down
  <div class="tmpl" slot="down">
  <span>菜单-1</span>
  <span>菜单-2</span>
  <span>菜单-3</span>
  <span>菜单-4</span>
  <span>菜单-5</span>
  <span>菜单-6</span>
  </div>
  //匿名插槽
  <div class="tmpl">
  <span>菜单->1</span>
  <span>菜单->2</span>
  <span>菜单->3</span>
  <span>菜单->4</span>
  <span>菜单->5</span>
  <span>菜单->6</span>
  </div>
 </child>
 </div>
</template>

作用域插槽 (有数据,但放开了渲染)

在组件中预先定义一个带有数据资源的代码空间,使用组件时可以直接使用代码空间中的数据

定义

<template>
 <div class="child">
 
 <h3>这里是子组件</h3>
 // 作用域插槽
 <slot :data="data"></slot>
 </div>
</template>
export default {
 data: function(){
  return {
  data: ['zhangsan','lisi','wanwu','zhaoliu','tianqi','xiaoba']
  }
 }
}

使用

<template>
 <div class="father">
 <h3>这里是父组件</h3>
 <!--第一次使用:用flex展示数据-->
 <child>
  <template slot-scope="user">
  <div class="tmpl">
   <span v-for="item in user.data">{{item}}</span>
  </div>
  </template>
 
 </child>
 
 <!--第二次使用:用列表展示数据-->
 <child>
  <template slot-scope="user">
  <ul>
   <li v-for="item in user.data">{{item}}</li>
  </ul>
  </template>
 
 </child>
 
 <!--第三次使用:直接显示数据-->
 <child>
  <template slot-scope="user">
  {{user.data}}
  </template>
 
 </child>
 
 <!--第四次使用:不使用其提供的数据, 作用域插槽退变成匿名插槽-->
 <child>
  我就是模板
 </child>
 </div>
</template>

总结:

匿名插槽和具名插槽的功能是 预留插入代码的空间

作用域插槽是提供数据资源,预留代码渲染逻辑空间

希望本文所述对大家vue.js程序设计有所帮助。

Javascript 相关文章推荐
jQuery ajax cache缓存问题
Jul 01 Javascript
JavaScript中for-in遍历方式示例介绍
Feb 11 Javascript
JavaScript实现twitter puddles算法实例
Dec 06 Javascript
Angularjs编写KindEditor,UEidtor,jQuery指令
Jan 28 Javascript
用JavaScript来美化HTML的select标签的下拉列表效果
Nov 17 Javascript
JS获取字符串实际长度(包含汉字)的简单方法
Aug 11 Javascript
JavaScript制作颜色反转小游戏
Sep 25 Javascript
Vue.JS入门教程之处理表单
Dec 01 Javascript
weex slider实现滑动底部导航功能
Aug 28 Javascript
HTML5开发Kinect体感游戏的实例应用
Sep 18 Javascript
JavaScript Array对象基本方法详解
Sep 03 Javascript
解决layui的form里的元素进行动态生成,验证失效的问题
Sep 14 Javascript
es6中new.target的作用和使用场景简单示例分析
Mar 14 #Javascript
JS中类的静态方法,静态变量,实例方法,实例变量区别与用法实例分析
Mar 14 #Javascript
js中forEach,for in,for of循环的用法示例小结
Mar 14 #Javascript
JS原型prototype和__proto__用法实例分析
Mar 14 #Javascript
JS数组的高级使用方法示例小结
Mar 14 #Javascript
vue-resource post数据时碰到Django csrf问题的解决
Mar 13 #Javascript
js函数和this用法实例分析
Mar 13 #Javascript
You might like
PHP Curl模拟登录微信公众平台、新浪微博实例代码
2016/01/28 PHP
PHP操作redis实现的分页列表,新增,删除功能封装类与用法示例
2018/08/04 PHP
Laravel自定义 封装便捷返回Json数据格式的引用方法
2019/09/29 PHP
jquery+ashx无刷新GridView数据显示插件(实现分页、排序、过滤功能)
2010/04/25 Javascript
jquery 图片缩放拖动的简单实例
2014/01/08 Javascript
浅析Javascript中“==”与“===”的区别
2014/12/23 Javascript
jQuery实现带滑动条的菜单效果代码
2015/08/26 Javascript
js显示当前日期时间和星期几
2015/10/22 Javascript
javascript数据类型详解
2017/02/07 Javascript
ES6学习之变量的两种命名方法示例
2017/07/18 Javascript
React学习笔记之列表渲染示例详解
2017/08/22 Javascript
jQuery Position方法使用和兼容性
2017/08/23 jQuery
webpack的tree shaking的实现方法
2019/09/18 Javascript
react-native聊天室|RN版聊天App仿微信实例|RN仿微信界面
2019/11/12 Javascript
详解ES6 扩展运算符的使用与注意事项
2020/11/12 Javascript
[01:04:02]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第二场 1月24日
2021/03/11 DOTA
Python中变量交换的例子
2014/08/25 Python
如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求
2015/10/13 Python
基于python实现简单日历
2018/07/28 Python
Python面向对象程序设计类的封装与继承用法示例
2019/04/12 Python
Python 如何优雅的将数字转化为时间格式的方法
2019/09/26 Python
使用opencv将视频帧转成图片输出
2019/12/10 Python
Python数据持久化存储实现方法分析
2019/12/21 Python
详解css3自定义滚动条样式写法
2017/12/25 HTML / CSS
html5 canvas绘制矩形和圆形的实例代码
2016/06/16 HTML / CSS
HTML5 canvas基本绘图之文字渲染
2016/06/27 HTML / CSS
CSS代码检查工具stylelint的使用方法详解
2021/03/27 HTML / CSS
急诊科护士自我鉴定
2013/10/14 职场文书
室内设计专业个人的自我评价
2013/10/19 职场文书
教师实习自我鉴定
2013/12/14 职场文书
企业军训感言
2014/02/08 职场文书
员工合理化建议书
2014/05/19 职场文书
三方股份合作协议书
2014/10/13 职场文书
2014年服装销售工作总结
2014/11/27 职场文书
个人合作协议范本
2015/08/06 职场文书
如何使用Tkinter进行窗口的管理与设置
2021/06/30 Python