详解vue slot插槽的使用方法


Posted in Javascript onJune 13, 2017

官方文档其实已经讲得很详细,我根据文档,把官方的小案例实现了一下,这样更直观

<!DOCTYPE html>
<html lang="en">

<head>
 <meta charset="UTF-8">
 <title>Document</title>
 <script src="https://unpkg.com/vue@2.3.3/dist/vue.js"></script>
</head>

<body>
 <div id="app">
  <div>
   <!-- 单slot -->
   <v-one>
    <!-- 这里的所有内容会替换掉slot -->
    <p>初始化段落一</p>
    <p>初始化段落二</p>
   </v-one>
   <!-- 渲染结果 -->
   <!-- <div>
    <h1>组件标题</h1>
    <p>初始化段落一</p>
    <p>初始化段落二</p>
    <p>组件段落内容</p>
    <p>I am one</p>
   </div> -->


   <!-- 具名slot -->
   <v-two>
    <p slot="nav">我是导航</p>
    <p slot="main">我是内容</p>
    <p slot="footer">我是底部</p>
   </v-two>
   <!-- 渲染结果 -->
   <!-- <div>
    <nav>
     <p>我是导航</p>
    </nav>
    <main>
     <p>我是内容</p>
    </main>
    <footer>
     <p>我是底部</p>
    </footer>
   </div> -->


   <!-- 作用域插槽 -->
   <v-three>
   <!-- 父组件默认无法使用子组件数据 -->
     <template scope="props">
       <p>{{props.text}}</p>
     </template>
   </v-three>

   <!-- 渲染结果 -->
   <!-- <div><p>I am three</p></div> -->
  </div>
 </div>


 <template id="one">
  <div>
   <h1>组件标题</h1>
   <slot></slot>
   <p>组件段落内容</p>
   <p>{{one}}</p>
  </div>
 </template>


 <!-- 具名slot -->
 <template id="two">
  <div>
   <nav>
    <slot name="nav"></slot>
   </nav>
   <main>
    <slot name="main"></slot>
   </main>
   <footer>
    <slot name="footer"></slot>
   </footer>
  </div>
 </template>

<!-- 作用域插槽 -->
 <template id="three">
  <div>
    <!-- 把数据传递给slot,这样父组件也可以访问three这个组件的数据 -->
   <slot :text="three"></slot>
  </div>
 </template>
 <script>
 new Vue({
  el: '#app',
  components: {
   'v-one': {
    template: '#one',
    data() {
     return {
      'one': 'I am one'
     }
    }
   },
   'v-two': {
    template: '#two',
    data() {
     return {
      'two': 'I am two'
     }
    }
   },
   'v-three': {
    template: '#three',
    data() {
     return {
      'three': 'I am three'
     }
    }
   }
  }
 });
 </script>
</body>

</html>

单个slot使用最简单,也是最常用的,当我们定义了一个子组件,父组件在使用的这个组件的时候,想在内部自定义一些初始化数据,这时候就可以用slot实现。

具名slot只是给slot加了name属性,在使用的时候可以引入多个。

作用域slot就比较强大了,我们知道子组件的数据,在父组件中是无法使用的,但是通过官方提供的扩展,可以轻松实现这一点。

渲染后效果图,可以直接自己在浏览器运行查看效果

详解vue slot插槽的使用方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript打印网页部分内容的脚本
Nov 17 Javascript
javascript 四则运算精度修正函数代码
May 31 Javascript
JS限制上传图片大小不使用控件在本地实现
Dec 19 Javascript
jquery简单实现滚动条下拉DIV固定在头部不动
Nov 25 Javascript
jQuery的DOM操作之删除节点示例
Jan 03 Javascript
遍历json 对象的属性并且动态添加属性的实现
Dec 02 Javascript
iview table render集成switch开关的实例
Mar 14 Javascript
jQuery实现的回车触发按钮事件功能示例
Mar 25 jQuery
使用JS代码实现俄罗斯方块游戏
Aug 03 Javascript
JS浅拷贝和深拷贝原理与实现方法分析
Feb 28 Javascript
微信小程序 wepy框架与iview-weapp的用法详解
Apr 10 Javascript
AJAX实现指定部分页面刷新效果
Oct 16 Javascript
详解Vue.js分发之作用域槽
Jun 13 #Javascript
Javascript实现从小到大的数组转换成二叉搜索树
Jun 13 #Javascript
微信小程序实现移动端滑动分页效果(ajax)
Jun 13 #Javascript
详解AngularJs路由之Ui-router-resolve(预加载)
Jun 13 #Javascript
微信小程序动态显示项目倒计时效果
Jun 13 #Javascript
深究AngularJS之ui-router详解
Jun 13 #Javascript
微信小程序自定义导航隐藏和显示功能
Jun 13 #Javascript
You might like
自动跳转中英文页面
2006/10/09 PHP
PhpMyAdmin出现export.php Missing parameter: what /export_type错误解决方法
2012/08/09 PHP
php笔记之:php数组相关函数的使用
2013/04/26 PHP
php生成图形(Libchart)实例
2013/11/06 PHP
PHP入门教程之面向对象基本概念实例分析
2016/09/11 PHP
PHP中的正则表达式实例详解
2017/04/25 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
javascript检测对象中是否存在某个属性判断方法小结
2013/05/19 Javascript
js导出table数据到excel即导出为EXCEL文档的方法
2013/10/10 Javascript
Javascript基础知识(二)事件
2014/09/29 Javascript
浅谈Unicode与JavaScript的发展史
2015/01/19 Javascript
详解Vue.js动态绑定class
2016/12/20 Javascript
js控制按钮,防止频繁点击响应的实例
2017/02/15 Javascript
使用Bootstrap + Vue.js实现添加删除数据示例
2017/02/27 Javascript
JavaScript中arguments和this对象用法分析
2018/08/08 Javascript
详解Vue.js v-for不支持IE9的解决方法
2018/12/29 Javascript
antd vue 刷新保留当前页面路由,保留选中菜单,保留menu选中操作
2020/08/06 Javascript
Python 通过pip安装Django详细介绍
2017/04/28 Python
python字符串和常用数据结构知识总结
2019/05/21 Python
selenium+python实现自动登陆QQ邮箱并发送邮件功能
2019/12/13 Python
利用PyCharm操作Github(仓库新建、更新,代码回滚)
2019/12/18 Python
pytorch之ImageFolder使用详解
2020/01/06 Python
python实现飞船大战
2020/04/24 Python
python读取yaml文件后修改写入本地实例
2020/04/27 Python
Pytorch转keras的有效方法,以FlowNet为例讲解
2020/05/26 Python
通过实例了解python__slots__使用方法
2020/09/14 Python
英国HYPE双肩包官网:英国本土时尚潮牌
2018/09/26 全球购物
女士鞋子、包包和服装在线,第一款10美元:ShoeDazzle
2019/07/26 全球购物
Nicole Miller官方网站:纽约女装品牌
2019/09/14 全球购物
电钳工人个人求职信
2014/05/10 职场文书
2014年小学教学工作总结
2014/11/13 职场文书
师德承诺书
2015/01/20 职场文书
2015年安全工作总结范文
2015/04/02 职场文书
市级三好生竞选稿
2015/11/21 职场文书
JS中一些高效的魔法运算符总结
2021/05/06 Javascript