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

vue組件什么條件下需要摧毀

夏志豪2年前35瀏覽0評論

vue組件什么條件下需要摧毀?

v-if與組件的自動銷毀

在文檔中有這樣一句話,v-if會確保在切換過程中條件塊內的事件監聽器和子組件適當地被銷毀和重建。

如果我們有這樣一個組件

<div id="app">

<template>

<el-button type="primary" @click="handleClick">銷毀</el-button>

<i-ctorc v-if="isChild"></i-ctorc>

</template>

</div>

我們通過點擊按鈕改變v-if的值,銷毀Child組件

var Child = {

template: `<div>{{ data }}</div>`,

data () {

return {

data: 'Child component'

}

},

beforeDestroy () {

console.log('before destory')

console.log(this.$el)

},

destroyed () {

console.log('destoryed')

console.log(this.$el)

}

}

var Ctorc = Vue.extend(Child)

var Main = {

data () {

return {

isChild: true

};

},

components: {

'i-ctorc': Ctorc

},

methods: {

handleClick () {

this.isChild = false

}

}

}

var Ctor = Vue.extend(Main)

new Ctor().$mount('#app')var Child = {

template: `<div>{{ data }}</div>`,

data () {

return {

data: 'Child component'

}

},

beforeDestroy () {

console.log('before destory')

console.log(this.$el)

},

destroyed () {

console.log('destoryed')

console.log(this.$el)

}

}

var Ctorc = Vue.extend(Child)

var Main = {

data () {

return {

isChild: true

};

},

components: {

'i-ctorc': Ctorc

},

methods: {

handleClick () {

this.isChild = false

}

}

}

var Ctor = Vue.extend(Main)

new Ctor().$mount('#app')

在用戶點擊時,Child組件就會被銷毀,銷毀的時候觸發生命周期的鉤子,在控制臺輸出

before destory

<div>Child component</div>

destoryed

<div>Child component</div

手動編譯與DOM操作

如果你為了配置方便,想要通過字符串配置組件,而不是slot等。你可能會用到compile和el。這時候你就要手動銷毀組件了。

可以參考iView的cell實現。