详解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 blockUI 遮罩不能消失与不能提交的解决方法
Sep 17 Javascript
js验证输入是否为手机号码或电话号码示例
Dec 30 Javascript
jQuery插件windowScroll实现单屏滚动特效
Jul 14 Javascript
原生js实现百叶窗效果及原理介绍
Apr 12 Javascript
全面了解JS中的匿名函数
Jun 29 Javascript
详解Vue2中组件间通信的解决全方案
Jul 28 Javascript
Vue2.0基于vue-cli+webpack父子组件通信(实例讲解)
Sep 14 Javascript
vue+express 构建后台管理系统的示例代码
Jul 19 Javascript
AngularJS上传文件的示例代码
Nov 10 Javascript
vue实现循环滚动列表
Jun 30 Javascript
JavaScript 声明私有变量的两种方式
Feb 05 Javascript
vue 自定义的组件绑定点击事件
Apr 21 Vue.js
详解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
解析php php_openssl.dll的作用
2013/07/01 PHP
php的ajax简单实例
2014/02/27 PHP
PHP Ajax JavaScript Json获取天气信息实现代码
2016/08/17 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
Yii框架的路由配置方法分析
2019/09/09 PHP
让ie运行js时提示允许阻止内容运行的解决方法
2010/10/24 Javascript
JS求平均值的小例子
2013/11/29 Javascript
使用javascript做的一个随机点名程序
2014/02/13 Javascript
在IE8上JS实现combobox支持拼音检索功能
2016/05/23 Javascript
AngularJS实现一次监听多个值发生的变化
2016/08/31 Javascript
jQuery将表单序列化成一个Object对象的实例
2016/11/29 Javascript
网站申请不到支付宝接口、微信接口,免接口收款实现方式几种解决办法
2016/12/14 Javascript
详解js数组的完全随机排列算法
2016/12/16 Javascript
jQuery实现可移动选项的左右下拉列表示例
2016/12/26 Javascript
js实现带缓动动画的导航栏效果
2017/01/16 Javascript
浅析vue数据绑定
2017/01/17 Javascript
推荐三款日期选择插件(My97DatePicker、jquery.datepicker、Mobiscroll)
2017/04/21 jQuery
require.js中的define函数详解
2017/07/10 Javascript
Vue Element使用icon图标教程详解(第三方)
2018/02/07 Javascript
ant design vue 表格table 默认勾选几项的操作
2020/10/31 Javascript
[46:10]2014 DOTA2国际邀请赛中国区预选赛 CnB VS HGT
2014/05/21 DOTA
Python多线程threading和multiprocessing模块实例解析
2018/01/29 Python
利用纯css3实现的文字亮光特效的代码演示
2014/11/27 HTML / CSS
鼠标滚轮事件和Mac触控板双指事件
2019/12/23 HTML / CSS
马来西亚时装购物网站:ZALORA马来西亚
2017/03/14 全球购物
厨师岗位职责
2013/11/12 职场文书
公益广告语集锦
2014/03/13 职场文书
物业保安员岗位职责
2014/03/14 职场文书
酒店采购员岗位职责
2014/03/14 职场文书
《白鹅》教学反思
2014/04/13 职场文书
500字小学生检讨书
2015/02/19 职场文书
婚姻出轨保证书
2015/05/08 职场文书
信仰观后感
2015/06/03 职场文书
同意落户证明
2015/06/19 职场文书
JS 4个超级实用的小技巧 提升开发效率
2021/10/05 Javascript