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 相关文章推荐
超强的IE背景图片闪烁(抖动)的解决办法
Sep 09 Javascript
jQuery asp.net 用json格式返回自定义对象
Apr 07 Javascript
文件编码导致jquery失效的解决方法
Jun 26 Javascript
javascript控制在光标位置插入文字适合表情的插入
Jun 09 Javascript
jQuery实现的手机发送验证码倒计时效果代码分享
Aug 24 Javascript
JavaScript知识点总结(六)之JavaScript判断变量数据类型
May 31 Javascript
echarts学习笔记之箱线图的分析与绘制详解
Nov 22 Javascript
微信小程序出现wx.getLocation再次授权问题的解决方法分析
Jan 16 Javascript
Vue项目路由刷新的实现代码
Apr 17 Javascript
vue-router的两种模式的区别
May 30 Javascript
vue中通过使用$attrs实现组件之间的数据传递功能
Sep 01 Javascript
react中hook介绍以及使用教程
Dec 11 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
ThinkPHP模板比较标签用法详解
2014/06/30 PHP
php绘制一条直线的方法
2015/01/24 PHP
JQuery实现简单时尚快捷的气泡提示插件
2012/12/20 Javascript
在JS中解析HTML字符串示例代码
2014/04/16 Javascript
JS 弹出层 定位至屏幕居中示例
2014/05/21 Javascript
javascript常用代码段搜集
2014/12/04 Javascript
js/jquery判断浏览器类型的方法小结
2015/05/12 Javascript
JS实现两表格里数据来回转移的方法
2015/05/28 Javascript
JavaScript中数据结构与算法(三):链表
2015/06/19 Javascript
jQuery仅用3行代码实现的显示与隐藏功能完整实例
2015/10/08 Javascript
Vue.js实现价格计算器功能
2020/03/30 Javascript
在 vue-cli v3.0 中使用 SCSS/SASS的方法
2018/06/14 Javascript
JS 实现发送短信验证码的“59秒后重新发送验证短信”功能
2019/08/23 Javascript
[52:08]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第一局
2016/03/05 DOTA
python实现在字符串中查找子字符串的方法
2015/07/11 Python
在Python的Django框架中获取单个对象数据的简单方法
2015/07/17 Python
解决vscode python print 输出窗口中文乱码的问题
2018/12/03 Python
python re库的正则表达式入门学习教程
2019/03/08 Python
mac系统下Redis安装和使用步骤详解
2019/07/09 Python
python 处理微信对账单数据的实例代码
2019/07/19 Python
Django如何批量创建Model
2020/09/01 Python
css3 box-sizing属性使用参考指南
2013/01/08 HTML / CSS
CSS3 :not()选择器实现最后一行li去除某种css样式
2016/10/19 HTML / CSS
LightInTheBox西班牙站点:全球商品在线采购
2016/09/22 全球购物
美国婴儿和儿童服装购物网站:PatPat
2020/10/01 全球购物
J2EE的优越性主要表现在哪些方面
2016/03/28 面试题
幼儿教师工作感言
2014/02/14 职场文书
药剂专业自荐书
2014/06/20 职场文书
有限公司股东合作协议书
2014/10/29 职场文书
财务经理岗位职责
2015/01/31 职场文书
企业计划生育责任书
2015/05/09 职场文书
2015年教师见习期工作总结
2015/05/20 职场文书
详解使用 CSS prefers-* 规范提升网站的可访问性与健壮性
2021/05/25 HTML / CSS
python之np.argmax()及对axis=0或者1的理解
2021/06/02 Python
Vue+Flask实现图片传输功能
2022/04/01 Vue.js
SQL Server数据库查询出现阻塞之性能调优
2022/04/10 SQL Server