欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

vue子組件關(guān)閉

洪振霞2年前9瀏覽0評論

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

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

<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這個屬性來控制是否顯示MyChild.vue。同時父組件中也掛載了一個關(guān)閉子組件的方法。

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

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

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

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