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匿名函数用法分析
Feb 13 Javascript
JQuery记住用户名密码实现下次自动登录功能
Apr 27 Javascript
JS延时提示框实现方法详解
Nov 26 Javascript
微信小程序 扎金花简单实例
Feb 21 Javascript
Angular 4依赖注入学习教程之ClassProvider的使用(三)
Jun 04 Javascript
详解vue服务端渲染(SSR)初探
Jun 19 Javascript
jQuery+vue.js实现的九宫格拼图游戏完整实例【附源码下载】
Sep 12 jQuery
JS库之Particles.js中文开发手册及参数详解
Sep 13 Javascript
解决Layui选择全部,换页checkbox复选框重新勾选的问题方法
Aug 14 Javascript
微信小程序中使用 async/await的方法实例分析
May 06 Javascript
js实现mp3录音通过websocket实时传送+简易波形图效果
Jun 12 Javascript
解决VUE项目localhost端口服务器拒绝连接,只能用127.0.0.1的问题
Aug 14 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提交表单失败后如何保留已经填写的信息
2014/06/20 PHP
基于ThinkPHP5.0实现图片上传插件
2017/09/25 PHP
ThinkPHP框架结合Ajax实现用户名校验功能示例
2019/07/03 PHP
jquery的index方法实现tab效果
2011/02/16 Javascript
Three.js源码阅读笔记(Object3D类)
2012/12/27 Javascript
document.all的一个比较完整的总结及案例
2013/01/31 Javascript
ExtJS 刷新后如何默认选中刷新前最后一次选中的节点
2014/04/03 Javascript
JavaScript操作Cookie方法实例分析
2015/05/27 Javascript
JavaScript每天必学之基础知识
2016/09/17 Javascript
nodejs入门教程四:URL相关模块用法分析
2017/04/24 NodeJs
Angular实现预加载延迟模块的示例
2017/10/12 Javascript
微信小程序表单验证插件WxValidate的二次封装功能(终极版)
2019/09/03 Javascript
浅谈Node新版本13.2.0正式支持ES Modules特性
2019/11/25 Javascript
javascript+Canvas实现画板功能
2020/06/23 Javascript
js实现简单扫雷
2020/11/27 Javascript
Python通过websocket与js客户端通信示例分析
2014/06/25 Python
Python编程实现控制cmd命令行显示颜色的方法示例
2017/08/14 Python
python使用pandas实现数据分割实例代码
2018/01/25 Python
解决python 未发现数据源名称并且未指定默认驱动程序的问题
2018/12/07 Python
如何使用Python进行OCR识别图片中的文字
2019/04/01 Python
pandas.cut具体使用总结
2019/06/24 Python
使用python将excel数据导入数据库过程详解
2019/08/27 Python
python base64库给用户名或密码加密的流程
2020/01/02 Python
解决html5中video标签无法播放mp4问题的办法
2017/05/07 HTML / CSS
美国高端婴童品牌:Hanna Andersson
2016/10/30 全球购物
Clarins娇韵诗英国官网:来自法国的天然护肤品牌
2017/04/18 全球购物
泰国办公用品购物网站:OfficeMate
2018/02/04 全球购物
德国拖鞋网站:German Slippers
2019/11/08 全球购物
个人求职信范文分享
2014/01/31 职场文书
田径运动会开幕式及主持词
2014/03/28 职场文书
医学专业大学生职业生涯规划书
2014/10/25 职场文书
企业愿景口号
2015/12/25 职场文书
go语言求任意类型切片的长度操作
2021/04/26 Golang
Redis基于Bitmap实现用户签到功能
2021/06/20 Redis
2021好看的国漫排行榜前十名 《完美世界》上榜,《元龙》排名第一
2022/03/18 国漫
vue选项卡切换的实现案例
2022/04/11 Vue.js