详解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 相关文章推荐
原生JS操作网页给p元素添加onclick事件及表格隔行变色
Dec 01 Javascript
深入理解JavaScript系列(40):设计模式之组合模式详解
Mar 04 Javascript
jQuery使用$.get()方法从服务器文件载入数据实例
Mar 25 Javascript
js实现n秒倒计时后才可以点击的效果
Dec 20 Javascript
vue项目中做编辑功能传递数据时遇到问题的解决方法
Dec 19 Javascript
360提示[高危]使用存在漏洞的JQuery版本的解决方法
Oct 27 jQuery
Vue.directive 自定义指令的问题小结
Mar 04 Javascript
三种Webpack打包方式(小结)
Sep 19 Javascript
vue下拉菜单组件(含搜索)的实现代码
Nov 25 Javascript
jQuery时间戳和日期相互转换操作示例
Dec 07 jQuery
ES6 Promise对象的含义和基本用法分析
Jun 14 Javascript
JS 实现发送短信验证码的“59秒后重新发送验证短信”功能
Aug 23 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中选择什么接口(mysql、mysqli)访问mysql
2013/02/06 PHP
基于ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据
2015/09/23 PHP
YiiFramework入门知识点总结(图文教程)
2015/12/28 PHP
PHP不使用内置函数实现字符串转整型的方法示例
2017/07/03 PHP
ajaxControlToolkit AutoCompleteExtender的用法
2008/10/30 Javascript
js 操作css实现代码
2009/06/11 Javascript
ExtJS Ext.MessageBox.alert()弹出对话框详解
2010/04/02 Javascript
js 延迟加载 改变JS的位置加快网页加载速度
2012/12/11 Javascript
onkeydown事件解决按回车键直接提交数据的需求
2013/04/11 Javascript
页面装载js及性能分析方法介绍
2014/03/21 Javascript
jquery删除指定子元素代码实例
2015/01/13 Javascript
Javascript核心读书有感之语言核心
2015/02/01 Javascript
JavaScript实现上下浮动的窗口效果代码
2015/10/12 Javascript
vuejs在解析时出现闪烁的原因及防止闪烁的方法
2016/09/19 Javascript
求js数组的最大值和最小值的四种方法
2017/03/03 Javascript
socket.io实现在线群聊功能
2017/04/07 Javascript
前后端如何实现登录token拦截校验详解
2018/09/03 Javascript
微信小程序调用微信支付接口的实现方法
2019/04/29 Javascript
[48:22]VGJ.S vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python 爬虫的工具列表大全
2016/01/31 Python
python3 实现的人人影视网站自动签到
2016/06/19 Python
Python3.5内置模块之time与datetime模块用法实例分析
2019/04/27 Python
Python画图高斯分布的示例
2019/07/10 Python
python之拟合的实现
2019/07/19 Python
python 爬取腾讯视频评论的实现步骤
2021/02/18 Python
用pip给python安装matplotlib库的详细教程
2021/02/24 Python
Canvas 帧动画吃苹果小游戏
2020/08/05 HTML / CSS
100%法国制造的游戏和玩具:Les Jouets Français
2021/03/02 全球购物
一份Java笔试题
2012/02/21 面试题
在SQL Server中创建数据库主要有那种方式
2013/09/10 面试题
2014年清明节网上祭英烈寄语
2014/04/09 职场文书
空乘英文求职信
2014/04/13 职场文书
党政领导班子群众路线对照检查材料思想汇报
2014/09/27 职场文书
餐厅开业活动方案
2019/07/08 职场文书
Vue详细的入门笔记
2021/05/10 Vue.js
MySQL 分组查询的优化方法
2021/05/12 MySQL