vue 的 solt 子组件过滤过程解析


Posted in Javascript onSeptember 07, 2019

如下图:

vue 的 solt 子组件过滤过程解析

1、定义了一个类似下拉的组件 mySelect , 然后里面有自定义的组件 myOptions

2、有很多时候,我们希望, mySelect 组件内部的子组件,只能是 myOptions 。 不应该有 <div>666</div>

3、在mySelect 里面做一层过滤,去掉不需要的组件

下面先看看

myOptions.vue 组件代码

<template>
 <div class="options">
   <div>这里是 options</div>
 </div>
</template>
 
<script>
// @ is an alias to /src
export default {
 name: 'myoptions',
 data(){
   return {}
 },
 created(){  
 },
 mounted(){
  }
}
</script>

接下来是 mySelect 的代码:

<template>
 <div class="select">
   <div>这里是 Select</div>
   <slot></slot>
 </div>
</template>
 
<script>
// @ is an alias to /src
 
 
export default {
 name: "myselect",
 data(){
   return {
     _children:[]
   }
 },
 created(){
   console.log(this.$children) // 输出为 []
   console.log(this.$slots.default) //输出为 [VNode, VNode, VNode]
   var arr = this.$slots.default || []
   var res = [];
   for(var i = 0; i < arr.length; i++){
      var item = arr[i];
      if(item.componentOptions && item.componentOptions.tag == "myOptions"){
        res.push(item);
      }
   }
   this._children = res;
   this.$slots.default = res;
 },
 mounted(){
  console.log(this.$slots.default) //[VNode, VNode]
  console.log(this.$children)//因为过滤掉了一个,所以为 [VueComponent, VueComponent]
 }
}
</script>

在 mySelect 的 created 和 mounted 里面,分别查看

this.$slots.default和 this.$children

就会发现内部的子组件渲染,与这个有很大关系,只需要过滤一下 slots 就可以了

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

Javascript 相关文章推荐
javascript 新浪背投广告实现代码
Jul 07 Javascript
离开页面时检测表单元素是否被修改,提示保存的js代码
Aug 25 Javascript
jQuery中wrapAll()方法用法实例
Jan 16 Javascript
jquery仅用6行代码实现滑动门效果
Sep 07 Javascript
Jquery ajax加载等待执行结束再继续执行下面代码操作
Nov 24 Javascript
js实现遍历含有input的table实例
Dec 07 Javascript
node.js从数据库获取数据
May 08 Javascript
vue2.0实现倒计时的插件(时间戳 刷新 跳转 都不影响)
Mar 30 Javascript
JavaScript中Object基础内部方法图
Feb 05 Javascript
node.js使用免费的阿里云ip查询获取ip所在地【推荐】
Sep 03 Javascript
js使用cookie实现记住用户名功能示例
Jun 13 Javascript
小程序外卖订单界面的示例代码
Dec 30 Javascript
javascript的惯性运动实现代码实例
Sep 07 #Javascript
vue的滚动条插件实现代码
Sep 07 #Javascript
微信小程序页面滚动到指定位置代码实例
Sep 07 #Javascript
通过vue写一个瀑布流插件代码实例
Sep 07 #Javascript
javascript写一个ajax自动拦截并下载数据代码实例
Sep 07 #Javascript
使用layui日期控件laydate对开始和结束时间进行联动控制的方法
Sep 06 #Javascript
解决layer.open后laydate失效的问题
Sep 06 #Javascript
You might like
PHP中的use关键字概述
2014/07/23 PHP
Apache连接PHP后无法启动问题解决思路
2015/06/18 PHP
PHP MVC框架路由学习笔记
2016/03/02 PHP
php自定义函数转换html标签示例
2016/09/29 PHP
php变量与JS变量实现不通过跳转直接交互的方法
2017/08/25 PHP
js判断浏览器的比较全的代码
2007/02/13 Javascript
5 cool javascript apps
2007/03/24 Javascript
用js实现的页面关键字密度查询代码
2007/12/27 Javascript
ImageFlow可鼠标控制图片滚动
2008/01/30 Javascript
让textarea自动调整大小的js代码
2011/04/12 Javascript
tangram框架响应式加载图片方法
2013/11/21 Javascript
分享自己用JS做的扫雷小游戏
2016/02/17 Javascript
JS动态计算移动端rem的解决方案
2016/10/14 Javascript
bootstrap table复杂操作代码
2016/11/01 Javascript
JS闭包与延迟求值用法示例
2016/12/22 Javascript
JS库particles.js创建超炫背景粒子插件(附源码下载)
2017/09/13 Javascript
js实现复制功能(多种方法集合)
2018/01/06 Javascript
微信小程序实现跑马灯效果完整代码(附效果图)
2018/05/30 Javascript
Angular脚手架开发的实现步骤
2019/04/09 Javascript
vue+element创建动态的form表单及动态生成表格的行和列
2019/05/20 Javascript
vue iview的菜单组件Mune 点击不高亮的解决方案
2019/11/01 Javascript
nuxt.js服务端渲染中axios和proxy代理的配置操作
2020/11/06 Javascript
python中利用xml.dom模块解析xml的方法教程
2017/05/24 Python
利用Python+Java调用Shell脚本时的死锁陷阱详解
2018/01/24 Python
python通过百度地图API获取某地址的经纬度详解
2018/01/28 Python
PyQt5每天必学之进度条效果
2018/04/19 Python
Python的控制结构之For、While、If循环问题
2020/06/30 Python
anello泰国官方网站:日本流行包包品牌
2019/08/08 全球购物
新闻编辑自荐书范文
2014/02/12 职场文书
巾帼建功标兵事迹材料
2014/05/11 职场文书
新颖的化妆品活动方案
2014/08/21 职场文书
群众路线教育查摆剖析材料
2014/10/10 职场文书
2015年法律事务部工作总结
2015/07/27 职场文书
小学生反邪教心得体会
2016/01/15 职场文书
Nginx解决403 forbidden的完整步骤
2021/04/01 Servers
请求模块urllib之PYTHON爬虫的基本使用
2022/04/08 Python