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 相关文章推荐
firefox中JS读取XML文件
Dec 21 Javascript
仿微博字符限制效果实现代码
Apr 20 Javascript
javascript获取函数名称、函数参数、对象属性名称的代码实例
Apr 12 Javascript
浅析js中substring和substr的方法
Nov 09 Javascript
jQuery图片切换动画特效
Nov 02 Javascript
JS闭包与延迟求值用法示例
Dec 22 Javascript
Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题
Nov 22 Javascript
angular-tree-component的使用详解
Jul 30 Javascript
Node.js Buffer模块功能及常用方法实例分析
Jan 05 Javascript
jQuery 判断元素是否存在然后按需加载内容的实现代码
Jan 16 jQuery
jQuery实现html可联动的百分比进度条
Mar 26 jQuery
react-native 实现购物车滑动删除效果的示例代码
Jan 15 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
UCenter中的一个可逆加密函数authcode函数代码
2010/07/20 PHP
PHP读取xml方法介绍
2013/01/12 PHP
php跨域cookie共享使用方法
2014/02/20 PHP
PHP获取短链接跳转后的真实地址和响应头信息的方法
2014/07/25 PHP
小程序微信支付功能配置方法示例详解【基于thinkPHP】
2019/05/05 PHP
prototype1.4中文手册
2006/09/22 Javascript
Extjs学习笔记之九 数据模型(上)
2010/01/11 Javascript
js自定义事件代码说明
2011/01/31 Javascript
利用js实现选项卡的特别效果的实例
2013/03/03 Javascript
JavaScript验证18位身份证号码最后一位正确性的实现代码
2014/08/07 Javascript
AngularJS 2.0入门权威指南
2016/10/08 Javascript
微信小程序开发之视频播放器 Video 弹幕 弹幕颜色自定义实例
2016/12/08 Javascript
浅谈Vue.js 1.x 和 2.x 实例的生命周期
2017/07/25 Javascript
Vuejs在v-for中,利用index来对第一项添加class的方法
2018/03/03 Javascript
微信小程序 调用微信授权窗口相关问题解决
2019/07/25 Javascript
vue下canvas裁剪图片实例讲解
2020/04/16 Javascript
vue mvvm数据响应实现
2020/11/11 Javascript
python单例设计模式实现解析
2020/01/07 Python
Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例
2020/03/14 Python
python之语音识别speech模块
2020/09/09 Python
使用html5 canvas绘制圆环动效
2019/06/03 HTML / CSS
Stutterheim瑞典:瑞典高级外套时装品牌
2019/06/24 全球购物
职称自我鉴定
2013/10/15 职场文书
自荐信不宜过于夸大
2013/11/06 职场文书
集体备课反思
2014/02/12 职场文书
音乐教学随笔感言
2014/02/19 职场文书
毕业典礼主持词大全
2014/03/26 职场文书
大学毕业寄语大全
2014/04/10 职场文书
土地租赁意向书
2014/07/30 职场文书
市场营销毕业求职信
2014/08/07 职场文书
移交协议书
2014/08/19 职场文书
大学毕业生自我评价
2015/03/02 职场文书
2015年生产车间工作总结
2015/04/22 职场文书
业务员管理制度范本
2015/08/06 职场文书
使用logback实现按自己的需求打印日志到自定义的文件里
2021/08/30 Java/Android
Javascript之datagrid查询详解
2021/09/15 Javascript