一、创建
1、beforeCreate组件创建前
2、created组件创建后
可在此方法中操作后端的数据,数据响应视图
应用:发起Ajax请求
<body>
<div id="app">
<App></App>
</div>
</body>
new Vue({
el:'#app',
data(){
return{}
},
components:{App}
});
var App={
templatr:'<div><Test></Test></div>',
components:{Test}
}
vat Test={
data(){
return{
msg:'hello word'
}
},
template:'<div><div>{{msg}}</div></div>',
beforeCreate(){
console.log(this.msg)
},
created(){
console.log(this.msg)
}
}
结果是:创建前:undefined
创建后:hello word
ps:创建前获取不到msg的值
二、挂载
1、beforeMount挂载数据到DOM前
2、mounted挂载后
//Test组件
beforeMount(){
console.log(document.getElementById('app'))
},
mounted(){
console.log(document.getElementById('app'))
}
结果是:挂载前:
<div id="app">
<app></app>
</div>
挂载后:
<div id="app">
<div>
<div>hello word</div>
</div>
</div>
三、DOM更新
1、beforeUpdate 获取原始DOM
2、updated 获取最新DOM
//Test组件
template:'<div><div>{{msg}}</div><button @click='changeText'>改变</button></div>',
methods:{
changeText(){
this.msg=this.msg+'哈哈哈'
}
}
beforeUpdate(){
console.log(document.getElementById('app').innerHTML)
},
updated(){
console.log(document.getElementById('app').innerHTML)
}
结果是:DOM更新前:
<div><div><div>hello word</div><button>改变</button></div></div>
DOM更新后:
<div><div><div>hello word哈哈哈</div><button>改变</button></div></div>
四、销毁
1、beforeDestroy销毁前
2、destroyed销毁后
var App={
data(){
return{
isShow:true
}
},
template:'
<div>
<Test v-if='isShow'></Test>
<button @click='isShow=!isShow'>改变生死</button>
</div>
'
}
beforeDestroy(){
console.log(‘beforeDestroy’)
},
destroyed(){
console.log(‘destroyed’)
}
销毁之后若再点击改变生死按钮,会重新渲染DOM
五、停用、激活
1、acltivated激活
2、deactivated停用
template:'
<div>
<keep-alive>
<Test v-if='isShow'></Test>
</keep-alive>
<button @click='isShow=!isShow'>改变生死</button>
</div>
'
}
< keep-alive >缓存,防止重复渲染DOM
acltivated(){
console.log(‘组件被激活了')
},
deactivated(){
console.log(‘组件被停用了’)
}