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 相关文章推荐
读jQuery之一(对象的组成)
Jun 11 Javascript
仿jQuery的siblings效果的js代码
Aug 09 Javascript
如何实现修改密码时密码框显示保存到cookie的密码
Dec 10 Javascript
JS实现从网页顶部掉下弹出层效果的方法
Aug 06 Javascript
详解Jquery的事件操作和文档操作
Dec 19 Javascript
jquery 正整数数字校验正则表达式
Jan 10 Javascript
vue实现element-ui对话框可拖拽功能
Aug 17 Javascript
vue利用v-for嵌套输出多层对象,分别输出到个表的方法
Sep 07 Javascript
基于three.js实现的3D粒子动效实例代码
Apr 09 Javascript
小程序组件之自定义顶部导航实例
Jun 12 Javascript
微信小程序 拍照或从相册选取图片上传代码实例
Aug 28 Javascript
vant时间控件使用方法详解
Dec 24 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
【动漫杂谈】关于《请在T台上微笑》
2020/03/03 日漫
基于php使用memcache存储session的详解
2013/06/25 PHP
PHP实现对xml进行简单的增删改查(CRUD)操作示例
2017/05/19 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
Nigma vs Liquid BO3 第二场2.14
2021/03/10 DOTA
JavaScript 字符串处理函数使用小结
2010/12/02 Javascript
javascript标签在页面中的位置探讨
2013/04/11 Javascript
在百度知道团队中快速审批新成员的js脚本
2014/02/02 Javascript
JavaScript设计模式之装饰者模式介绍
2014/12/28 Javascript
JavaScript判断页面加载完之后再执行预定函数的技巧
2016/05/17 Javascript
浅谈toLowerCase和toLocaleLowerCase的区别
2016/08/15 Javascript
JS button按钮实现submit按钮提交效果
2016/11/01 Javascript
从零开始学习Node.js系列教程六:EventEmitter发送和接收事件的方法示例
2017/04/13 Javascript
用vue 实现手机触屏滑动功能
2020/05/28 Javascript
[00:42]《辉夜杯》—职业组预选赛12月3日15点 正式打响
2015/12/03 DOTA
简单的编程0基础下Python入门指引
2015/04/01 Python
Python中利用Scipy包的SIFT方法进行图片识别的实例教程
2016/06/03 Python
python中关于for循环的碎碎念
2017/06/30 Python
在python中利用opencv简单做图片比对的方法
2019/01/24 Python
CentOS7安装Python3的教程详解
2019/04/10 Python
Python模块、包(Package)概念与用法分析
2019/05/31 Python
基于python+selenium的二次封装的实现
2020/01/06 Python
解决Tensorflow 内存泄露问题
2020/02/05 Python
django 实现简单的插入视频
2020/04/07 Python
在keras里实现自定义上采样层
2020/06/28 Python
用CSS3来实现社交分享按钮
2014/11/11 HTML / CSS
StubHub德国:购买和出售门票
2017/09/06 全球购物
法国在线宠物店:zooplus.fr
2018/02/23 全球购物
Urban Decay官方网站:美国化妆品品牌
2020/06/04 全球购物
致标枪运动员广播稿
2014/02/06 职场文书
学生个人自我鉴定范文
2014/03/28 职场文书
放飞梦想演讲稿600字
2014/08/26 职场文书
2015毕业生自我评价范文
2015/03/02 职场文书
干货:如何写好工作总结报告!
2019/05/10 职场文书
导游词之海南天涯海角
2019/12/05 职场文书
JavaScript分页组件使用方法详解
2021/07/26 Javascript