1.组件生命周期
下图展示了实例的生命周期。你不需要立马弄明白所有的东西,不过随着你的不断学习和使用,它的参考价值会越来越高。
Vue的组件都是独立存在的,每个组件都要经历他自己的生命周期。Vue的生命周期是指组件: 创建—>数据初始化—>挂载—>更新—>销毁 通过下面的这张图,简单的来说就是组件从创建到销毁之间的过程。

生命周期实例:
<!DOCTYPE html>
<html lang="zh">
<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</title>
</head>
<body>
<div id="app">
<button @click="update">更新</button>
<h3 id="h3">{{ message }}</h3>
</div>
<!-- 引入开发环境的vue.js版本,包含了有帮助的命令行警告 ,这样使用的也是最新版本-->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
let vm = new Vue({
el: '#app',
data: {
message: 'Java大法好!'
},
//===创建时的四个事件
beforeCreate() { // 第一个被执行的钩子方法:实例被创建出来之前执行
console.log(this.message) //undefined
this.show() //TypeError: this.show is not a function
// beforeCreate执行时,data 和 methods 中的 数据都还没有没初始化
},
created() { // 第二个被执行的钩子方法
console.log(this.message) //Java大法好!
this.show() //执行show方法
// created执行时,data 和 methods 都已经被初始化好了!
// 如果要调用 methods 中的方法,或者操作 data 中的数据,最早,只能在 created 中操作
},
beforeMount() { // 第三个被执行的钩子方法
console.log(document.getElementById('h3').innerText) //{{ message }}
// beforeMount执行时,模板已经在内存中编辑完成了,尚未被渲染到页面中
},
mounted() { // 第四个被执行的钩子方法
console.log(document.getElementById('h3').innerText) //Java大法好!
// 内存中的模板已经渲染到页面,用户已经可以看见内容
},
//===运行中的两个事件
beforeUpdate() { // 数据更新的前一刻
console.log('界面显示的内容:' + document.getElementById('h3').innerText)
console.log('data 中的 message 数据是:' + this.message)
// beforeUpdate执行时,内存中的数据已更新,但是页面尚未被渲染
},
updated() {
console.log('界面显示的内容:' + document.getElementById('h3').innerText)
console.log('data 中的 message 数据是:' + this.message)
// updated执行时,内存中的数据已更新,并且页面已经被渲染
},
methods: {
show() {
console.log('执行show方法')
},
update() {
this.message = '人生苦短,我学python!'
}
}
})
</script>
</body>
</html>
运行结果:

点击更新后:

2.包含子组件的生命周期
父子组件第一次加载时触发的生命周期函数以及执行顺序如下:
父beforeCreate --> 父caeated --> 父beforeMount --> 子beforeCreate --> 子created --> 子beforeMount --> 子mounted -->父mounted
父子组件更新时触发的声明周期函数以及执行顺序如下:
父beforeUpdate --> 子beforeUpdate --> 子updated --> 父updated
父子组件销毁时触发的生命周期函数执行顺序如下:
父beforeDestroy --> 子beforeDestroy --> 子destroyed --> 父destroyed