国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JavaScript > 正文

vue 的 solt 子組件過濾過程解析

2019-11-19 10:51:24
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

如下圖:

1、定義了一個(gè)類似下拉的組件 mySelect , 然后里面有自定義的組件 myOptions

2、有很多時(shí)候,我們希望, mySelect 組件內(nèi)部的子組件,只能是 myOptions 。 不應(yīng)該有 <div>666</div>

3、在mySelect 里面做一層過濾,去掉不需要的組件

下面先看看

myOptions.vue 組件代碼

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

接下來(lái)是 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)//因?yàn)檫^濾掉了一個(gè),所以為 [VueComponent, VueComponent] }}</script>

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

this.$slots.default和 this.$children

就會(huì)發(fā)現(xiàn)內(nèi)部的子組件渲染,與這個(gè)有很大關(guān)系,只需要過濾一下 slots 就可以了

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 格尔木市| 勃利县| 靖宇县| 轮台县| 七台河市| 玉田县| 灵璧县| 镇雄县| 卢氏县| 乌兰察布市| 永顺县| 南充市| 达日县| 房山区| 任丘市| 揭东县| 台湾省| 万源市| 新密市| 灌云县| 横山县| 哈密市| 岱山县| 柯坪县| 南乐县| 南部县| 霍林郭勒市| 长白| 元氏县| 抚远县| 读书| 双江| 二连浩特市| 奉化市| 霸州市| 济阳县| 漠河县| 花莲市| 乌鲁木齐市| 延长县| 兴和县|