色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

vue子組件關(guān)閉

在開(kāi)發(fā)Vue項(xiàng)目時(shí),子組件是非常常見(jiàn)的組件類型。子組件顧名思義就是被包含在另一個(gè)組件中的子級(jí)組件。隨著項(xiàng)目的發(fā)展,我們有時(shí)候需要關(guān)閉一個(gè)子組件,本文將詳細(xì)講述如何關(guān)閉Vue子組件。

首先,我們需要明確一點(diǎn),關(guān)閉Vue子組件不是指隱藏子組件,在Vue框架中隱藏子組件可以使用v-show或v-if指令來(lái)實(shí)現(xiàn)。關(guān)閉子組件是指使子組件不再顯示在父組件的組件樹(shù)中,也就是將其徹底卸載。

<template>
<div>
<h1>我的父組件</h1>
<my-child :is-show="true"/>
<button @click="closeChild">關(guān)閉子組件</button>
</div>
</template>
<script>
import MyChild from './MyChild.vue';
export default {
name: 'MyParent',
components: {
MyChild
},
methods: {
closeChild() {
// TODO: 調(diào)用關(guān)閉子組件的方法
}
}
};
</script>

如上代碼所表示,拉取了子組件MyChild.vue。父組件中使用了Is-Show這個(gè)屬性來(lái)控制是否顯示MyChild.vue。同時(shí)父組件中也掛載了一個(gè)關(guān)閉子組件的方法。

那么如何調(diào)用關(guān)閉Vue子組件的方法呢?Vue提供了兩種方式來(lái)銷毀子組件,即將子組件從父組件中刪除和銷毀子組件的實(shí)例對(duì)象。這兩種方式分別對(duì)應(yīng)兩個(gè)函數(shù),removeChild()和destroy()。我們實(shí)現(xiàn)關(guān)閉Vue子組件需要用到Vue的一個(gè)mixins方法。

<script>
export default {
mounted() {
this.$root.eventHub.$on('close-child-component', this.closeSelf);
},
beforeDestroy() {
this.$root.eventHub.$off('close-child-component', this.closeSelf);
},
methods: {
closeSelf() {
const elem = this.$el;
elem.parentNode.removeChild(elem);
this.$destroy();
}
}
};
</script>

如上代碼所示,我們定義了一個(gè)名為closeSelf的方法。在父組件mounted鉤子函數(shù)中,我們監(jiān)聽(tīng)了一個(gè)事件名為“close-child-component”,然后將closeSelf綁定到該事件上。當(dāng)我們需要關(guān)閉子組件時(shí),只需要觸發(fā)該事件即可。

當(dāng)我們調(diào)用事件時(shí),會(huì)將$el即子組件的DOM元素從父節(jié)點(diǎn)中刪除,并通過(guò)this.$destroy()方法銷毀子組件的實(shí)例對(duì)象,這意味著子組件的所有生命周期鉤子函數(shù)都會(huì)被調(diào)用(beforeDestroy、destroyed)。

在使用Vue框架中,子組件是非常常見(jiàn)的組件類型。而在Vue中關(guān)閉子組件就需要將子組件從父組件中刪除并銷毀子組件的實(shí)例對(duì)象。我們可以使用Vue提供的mixins方法,來(lái)實(shí)現(xiàn)關(guān)閉Vue子組件。