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

首頁 > 語言 > JavaScript > 正文

vue動態子組件的兩種實現方式

2024-05-06 15:35:11
字體:
來源:轉載
供稿:網友

文章目錄

方式一:局部注冊所需組件 使用緩存 方式二:動態注冊組件實現

讓多個組件使用同一個掛載點,并動態切換,這就是動態組件。

通過使用保留的 <component>元素,動態地綁定到它的 is 特性,可以實現動態組件。

方式一:局部注冊所需組件

<div id="example"> <button @click="change">切換頁面</button> <component :is="currentView"></component></div><script>var home = {template:'<div>我是主頁</div>'};var post = {template:'<div>我是提交頁</div>'};var archive = {template:'<div>我是存檔頁</div>'};new Vue({ el: '#example', components: {  home,  post,  archive, }, data:{  index:0,  arr:['home','post','archive'], }, computed:{  currentView(){    return this.arr[this.index];  } }, methods:{  change(){   this.index = (++this.index)%3;  } }})</script>

使用<keep-alive>緩存

<keep-alive> 包裹動態組件時,會緩存不活動的組件實例,而不是銷毀它們。和 <transition>相似,<keep-alive> 是一個抽象組件:它自身不會渲染一個 DOM 元素,也不會出現在父組件鏈中。

基本用法:

<div id="example"> <button @click="change">切換頁面</button> <keep-alive>  <component :is="currentView"></component>  </keep-alive></div>

條件判斷

如果有多個條件性的子元素,<keep-alive> 要求同時只有一個子元素被渲染:

<div id="example"> <button @click="change">切換頁面</button> <keep-alive>  <home v-if="index===0"></home>  <posts v-else-if="index===1"></posts>  <archive v-else></archive>  </keep-alive></div><script>new Vue({ el: '#example', components:{  home:{template:`<div>我是主頁</div>`},  posts:{template:`<div>我是提交頁</div>`},  archive:{template:`<div>我是存檔頁</div>`}, }, data:{  index:0, }, methods:{  change(){   let len = Object.keys(this.$options.components).length;   this.index = (++this.index)%len;  } }})</script>

activated 和 deactivated

activated 和 deactivated 在 <keep-alive> 樹內的所有嵌套組件中觸發:

<div id="example"> <button @click="change">切換頁面</button> <keep-alive>  <component :is="currentView" @pass-data="getData"></component>  </keep-alive> <p>{{msg}}</p></div><script>new Vue({ el: '#example', data:{  index:0,  msg:'',    arr:[   {     template:`<div>我是主頁</div>`,    activated(){     this.$emit('pass-data','主頁被添加');    },    deactivated(){     this.$emit('pass-data','主頁被移除');    },       },   {template:`<div>我是提交頁</div>`},   {template:`<div>我是存檔頁</div>`}  ], }, computed:{  currentView(){    return this.arr[this.index];  } }, methods:{  change(){   var len = this.arr.length;   this.index = (++this.index)% len;  },  getData(value){   this.msg = value;   setTimeout(()=>{    this.msg = '';   },500)  } }})</script>            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 新邵县| 沙雅县| 咸宁市| 沧州市| 买车| 乐业县| 随州市| 小金县| 绥阳县| 玛沁县| 广宗县| 陈巴尔虎旗| 会东县| 图木舒克市| 泌阳县| 常德市| 吉木乃县| 台南市| 普兰县| 凯里市| 阿鲁科尔沁旗| 怀宁县| 安岳县| 中阳县| 广河县| 衡阳县| 长阳| 怀来县| 敦化市| 长寿区| 璧山县| 大渡口区| 蓬安县| 彭州市| 房山区| 柳江县| 忻州市| 湘潭县| 嘉义县| 定襄县| 文化|