详解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 图片上一张下一张链接效果代码
Mar 12 Javascript
jquery插件开发之实现google+圈子选择功能
Mar 10 Javascript
js获取select默认选中的Option并不是当前选中值
May 07 Javascript
jQuery多个input求和的实现方法
Feb 12 Javascript
Bootstrap布局方式详解
May 27 Javascript
js防阻塞加载的实现方法
Sep 09 Javascript
js实现3D图片展示效果
Mar 09 Javascript
JavaScript使用面向对象实现的拖拽功能详解
Jun 12 Javascript
vue之a-table中实现清空选中的数据
Nov 07 Javascript
webpack.DefinePlugin与cross-env区别详解
Feb 23 Javascript
使用React-Router实现前端路由鉴权的示例代码
Jul 26 Javascript
JavaScript实现复选框全选和取消全选
Nov 20 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
PHP4实际应用经验篇(6)
2006/10/09 PHP
《PHP编程最快明白》第七讲:php图片验证码与缩略图
2010/11/01 PHP
PHP序列号生成函数和字符串替换函数代码
2012/06/07 PHP
Laravel框架集合用法实例浅析
2020/05/14 PHP
PHPstorm激活码2020年5月13日亲测有效
2020/09/17 PHP
node.js 一个简单的页面输出实现代码
2012/03/07 Javascript
JavaScript在XHTML中的用法详解
2013/04/11 Javascript
JavaScript function 的 length 属性使用介绍
2014/09/15 Javascript
js放大镜放大购物图片效果
2017/01/18 Javascript
Bootstrap table 定制提示语的加载过程
2017/02/20 Javascript
js实现1,2,3,5数字按照概率生成
2017/09/12 Javascript
vue单页应用加百度统计代码(亲测有效)
2018/01/31 Javascript
配置eslint规范项目代码风格
2019/03/11 Javascript
JavaScript实现汉字转换为拼音及缩写的方法示例
2019/03/28 Javascript
关于layui时间回显问题的解决方法
2019/09/24 Javascript
微信小程序 多行文本显示...+显示更多按钮和收起更多按钮功能
2019/09/26 Javascript
python处理json数据中的中文
2014/03/06 Python
python基础教程之五种数据类型详解
2017/01/12 Python
Python编写一个闹钟功能
2017/07/11 Python
Python实现求笛卡尔乘积的方法
2017/09/16 Python
使用python将请求的requests headers参数格式化方法
2019/01/02 Python
Python实现查找最小的k个数示例【两种解法】
2019/01/08 Python
Python数据可视化教程之Matplotlib实现各种图表实例
2019/01/13 Python
Python实现连接MySql数据库及增删改查操作详解
2019/04/16 Python
详解Python time库的使用
2019/10/10 Python
如何一键升级Python所有包
2020/11/05 Python
世界经理人咨询有限公司面试
2014/09/23 面试题
党支部对照检查材料
2014/08/25 职场文书
微笑面对生活演讲稿
2014/09/23 职场文书
交通事故和解协议书
2014/09/25 职场文书
关于运动会广播稿50字
2014/10/18 职场文书
先进典型事迹材料
2014/12/29 职场文书
房产公证书格式
2015/01/26 职场文书
《我的伯父鲁迅先生》教学反思
2016/02/16 职场文书
Python PIL按比例裁剪图片
2022/05/11 Python
Spring中bean集合注入的方法详解
2022/07/07 Java/Android