详解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 相关文章推荐
JQuery textlimit 显示用户输入的字符数 限制用户输入的字符数
May 14 Javascript
Javascript 日期处理之时区问题
Oct 08 Javascript
SlideView 图片滑动(扩展/收缩)展示效果
Aug 01 Javascript
Flex通过JS获取客户端IP和计算机名的实例代码
Nov 21 Javascript
JS的get和set使用示例
Feb 20 Javascript
封装好的一个万能检测表单的方法
Jan 21 Javascript
jquery实现模拟百分比进度条渐变效果代码
Oct 29 Javascript
jQuery实现订单提交页发送短信功能前端处理方法
Jul 04 Javascript
移动端脚本框架Hammer.js
Dec 15 Javascript
微信小程序动态生成二维码的实现代码
Jul 25 Javascript
详解es6新增数组方法简便了哪些操作
May 09 Javascript
Vue-cli打包后如何本地查看的操作
Sep 02 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
PHP命名空间(Namespace)的使用详解
2013/05/04 PHP
单点登录 Ucenter示例分析
2013/10/29 PHP
ThinkPHP使用心得分享-分页类Page的用法
2014/05/15 PHP
php使用fullcalendar日历插件详解
2019/03/06 PHP
Flash对联广告的关闭按钮讨论
2007/01/30 Javascript
jquery中输入验证中一个不错的效果
2010/08/21 Javascript
javascript 基础篇1 什么是js 建立第一个js程序
2012/03/14 Javascript
JQuery动画和停止动画实例代码
2013/03/01 Javascript
jQuery实用基础超详细介绍
2013/04/11 Javascript
JavaScrip实现PHP print_r的数功能(三种方法)
2013/11/12 Javascript
利用NodeJS和PhantomJS抓取网站页面信息以及网站截图
2013/11/18 NodeJs
js判断字符长度以及中英文数字等
2013/12/31 Javascript
js实现圆盘记速表
2015/08/03 Javascript
js实现上传文件添加和删除文件选择框
2016/10/24 Javascript
AngularJs 利用百度地图API 定位当前位置 获取地址信息
2017/01/18 Javascript
动手写一个angular版本的Message组件的方法
2017/12/16 Javascript
Vue服务器渲染Nuxt学习笔记
2018/01/31 Javascript
js中的this的指向问题详解
2019/08/29 Javascript
Bootstrap实现模态框效果
2019/09/30 Javascript
redux处理异步action解决方案
2020/03/22 Javascript
vue+axios全局添加请求头和参数操作
2020/07/24 Javascript
通过JS判断网页是否为手机打开
2020/10/28 Javascript
[00:15]TI9观赛名额抽取
2019/07/10 DOTA
python中关于日期时间处理的问答集锦
2013/03/08 Python
Python随手笔记第一篇(2)之初识列表和元组
2016/01/23 Python
python3 与python2 异常处理的区别与联系
2016/06/19 Python
Django+Ajax+jQuery实现网页动态更新的实例
2018/05/28 Python
详解10个可以快速用Python进行数据分析的小技巧
2019/06/24 Python
Django使用中间键实现csrf认证详解
2019/07/22 Python
HTML5中input[type='date']自定义样式与日历校验功能的实现代码
2017/07/11 HTML / CSS
Puccini乌克兰:购买行李箱、女士手袋网上商店
2020/08/06 全球购物
五四青年节优秀演讲稿范文
2014/05/28 职场文书
小学毕业典礼演讲稿
2014/09/09 职场文书
法院授权委托书格式
2014/09/28 职场文书
实习指导教师评语
2014/12/30 职场文书
浅谈PHP7中的一些小技巧
2021/05/29 PHP