<!DOCTYPE html
>
<html lang
="en">
<head
>
<meta charset
="UTF-8">
<meta name
="viewport" content
="width=device-width, initial-scale=1.0">
<meta http
-equiv
="X-UA-Compatible" content
="ie=edge">
<title
>Document
</title
>
</head
>
<body
>
<div id
="app">
<aaa
></aaa
>
</div
>
<template id
="aaa">
<div
>
<p
class="myp">A组件
</p
>
<button @click
="destroy">destroy
</button
>
<input type
="text" v
-model
="msg">
<p
>msg
:{{msg
}}</p
>
</div
>
</template
>
</body
>
<script src
="https://cdn.jsdelivr.net/npm/vue"></script
>
<script
>
Vue
.component("aaa",{
template
:"#aaa",
data
:function(){
return {msg
:'hello'}
},
timer
:null,
methods
:{
destroy
:function(){
this.$destroy()
}
},
beforeCreate
:function(){
console
.log('beforeCreate:刚刚new Vue()之后,这个时候,数据还没有挂载呢,只是一个空壳')
console
.log(this.msg
)
console
.log(document
.getElementsByClassName("myp")[0])
},
created
:function(){
console
.log('created:这个时候已经可以使用到数据,也可以更改数据,在这里更改数据不会触发updated函数')
this.msg
+='!!!'
console
.log('在这里可以在渲染前倒数第二次更改数据的机会,不会触发其他的钩子函数,一般可以在这里做初始数据的获取')
console
.log('接下来开始找实例或者组件对应的模板,编译模板为虚拟dom放入到render函数中准备渲染')
},
beforeMount
:function(){
console
.log('beforeMount:虚拟dom已经创建完成,马上就要渲染,在这里也可以更改数据,不会触发updated')
this.msg
+='@@@@'
console
.log('在这里可以在渲染前最后一次更改数据的机会,不会触发其他的钩子函数,一般可以在这里做初始数据的获取')
console
.log(document
.getElementsByClassName("myp")[0])
console
.log('接下来开始render,渲染出真实dom')
},
mounted
:function(){
console
.log('mounted:此时,组件已经出现在页面中,数据、真实dom都已经处理好了,事件都已经挂载好了')
console
.log(document
.getElementsByClassName("myp")[0])
console
.log('可以在这里操作真实dom等事情...')
},
beforeUpdate
:function(){
console
.log('beforeUpdate:重新渲染之前触发')
console
.log('然后vue的虚拟dom机制会重新构建虚拟dom与上一次的虚拟dom树利用diff算法进行对比之后重新渲染')
},
updated
:function(){
console
.log('updated:数据已经更改完成,dom也重新render完成')
},
beforeDestroy
:function(){
console
.log('beforeDestory:销毁前执行($destroy方法被调用的时候就会执行),一般在这里善后:清除计时器、清除非指令绑定的事件等等...')
},
destroyed
:function(){
console
.log('destroyed:组件的数据绑定、监听...都去掉了,只剩下dom空壳,这里也可以善后')
}
})
new Vue({
}).$mount('#app')
</script
>
</html
>
转载请注明原文地址: https://lol.8miu.com/read-10497.html