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 相关文章推荐
javascript中的数字与字符串相加实例分析
Aug 14 Javascript
Knockoutjs的环境搭建教程
Nov 26 Javascript
在JavaScript中typeof的用途介绍
Apr 11 Javascript
简单谈谈javascript Date类型
Sep 06 Javascript
Ionic实现仿通讯录点击滑动及$ionicscrolldelegate使用分析
Jan 18 Javascript
jQuery中数据缓存$.data的用法及源码完全解析
Apr 29 Javascript
WebSocket实现简单客服聊天系统
May 12 Javascript
Vue2.0 http请求以及loading展示实例
Mar 06 Javascript
jQuery 导航自动跟随滚动的实现代码
May 30 jQuery
对于防止按钮重复点击的尝试详解
Apr 22 Javascript
angular8.5集成TinyMce5的使用和详细配置(推荐)
Nov 16 Javascript
html中创建并调用vue组件的几种方法汇总
Nov 17 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+jquery+ajax实现即时聊天功能实例
2014/12/23 PHP
PHP中array_keys和array_unique函数源码的分析
2016/02/26 PHP
PHP基于timestamp和nonce实现的防止重放攻击方案分析
2019/07/26 PHP
PHP设计模式(一)工厂模式Factory实例详解【创建型】
2020/05/02 PHP
PHP安装扩展mcrypt以及相关依赖项深入讲解
2021/03/04 PHP
Jquery截取中文字符串的实现代码
2010/12/22 Javascript
jQuery EasyUI API 中文文档 - Menu菜单
2011/10/03 Javascript
javascript椭圆旋转相册实现代码
2012/01/16 Javascript
javascript解决innerText浏览器兼容问题思路代码
2013/05/17 Javascript
基于jquery实现的文字淡入淡出效果
2013/11/14 Javascript
使用CSS3的scale实现网页整体缩放
2014/03/18 Javascript
jQuery中position()方法用法实例
2015/01/16 Javascript
jQuery插件multiScroll实现全屏鼠标滚动切换页面特效
2015/04/12 Javascript
jQuery Ajax中的事件详细介绍
2015/04/16 Javascript
jQuery实现简单的列表式导航菜单效果代码
2015/08/31 Javascript
Vuejs第十篇之vuejs父子组件通信
2016/09/06 Javascript
jQuery按需加载轮播图(web前端性能优化)
2017/02/17 Javascript
微信小程序实现登录页云层漂浮的动画效果
2017/05/05 Javascript
JS小球抛物线轨迹运动的两种实现方法详解
2017/12/20 Javascript
微信小程序实现图片上传功能
2018/05/28 Javascript
vue项目中使用Hbuilder打包app 设置沉浸式状态栏的方法
2018/10/22 Javascript
Python CSV模块使用实例
2015/04/09 Python
Python矩阵常见运算操作实例总结
2017/09/29 Python
Python 12306抢火车票脚本
2018/02/07 Python
在python中以相同顺序shuffle两个list的方法
2018/12/13 Python
Python中logging实例讲解
2019/01/17 Python
使用scrapy ImagesPipeline爬取图片资源的示例代码
2020/09/28 Python
结合CSS3的新特性来总结垂直居中的实现方法
2016/05/30 HTML / CSS
澳大利亚吉他在线:Artist Guitars
2017/03/30 全球购物
施华洛世奇波兰官网:SWAROVSKI波兰
2019/06/18 全球购物
留学推荐信怎么写
2014/01/25 职场文书
李敖北大演讲稿
2014/05/24 职场文书
教师优秀党员事迹材料
2014/08/14 职场文书
JS Object构造函数之Object.freeze
2021/04/28 Javascript
Python 如何将integer转化为罗马数(3999以内)
2021/06/05 Python
Python预测分词的实现
2021/06/18 Python