vue組件什麼條件下需要摧毀?
01-11
Vue 是數據驅動的MVVM框架,所以上來你思考的是如何組織你的數據。
v-if與組件的自動銷毀
在文檔中有這樣一句話,v-if會確保在切換過程中條件塊內的事件監聽器和子組件適當地被銷毀和重建。
如果我們有這樣一個組件
&
&
&
&
&
&
我們通過點擊按鈕改變v-if的值,銷毀Child組件
var Child = {
template: `&{{ data }}&
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: `&{{ data }}&
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
&Child component&
&Child component&