2、第二个生命周期函数,表示实例进行初始化的时候,会执行该函数
在 created 中,data和methods 都已经被初始化完成。 如果需要调用methods 中的方法,或操作data中的数据,最早只能在created中进行操作。
created() {
console.log(this.message); // hello world
this.show(); //执行了show方法
},
3
、第三个生命周期函数,表示模板已经在内存中编译完成,但是还未把模板渲染到页面中
在beforeMount执行的时候,页面中的元素没有被真正替换,只是之前写入的一些模板字符串。
beforeMount() {
console.log(document.getElementById(‘h3’).innerText) //{{message}}
},
4、第四个生命周期函数,表示内存中的模板已经真实的挂载到页面中,用户可以看到已经渲染好的页面
mounted是实例创建期间阶段的最后一个生命周期函数,当执行完 mounted 之后就表示实例已被完全创建,此时如果没有其它操作的话,这个实例就在内存中不动了。
mounted() {
console.log(document.getElementById(‘h3’).innerText) //hello world
},
二、组件运行阶段的2个钩子函数
5、第五个生命周期函数,表示界面还没被更新,但是数据确定已经更新
当执行 beforeUpdate 的时候,页面中的显示的数据还是未更新的旧数据,但此时的data 数据是最新的,页面的数据尚未和最新的数据保持同步更新。
beforeUpdate() {
console.log(‘界面上的内容’+ document.getElementById(‘h3’).innerText) //没有执行,因为数据没改变
console.log(‘data中message数据:’ + this.message)
},
6、第六个生命周期函数,表示界面的数据已经更新
updated事件执行的时候,页面和 data 数据已经保持一致了,都是最新的数据。
updated() {
console.log(‘界面上的内容’+ document.getElementById(‘h3’).innerText) //Hi
console.log(‘data中message数据:’ + this.message) //Hi
},
三、组件销毁阶段的2个钩子函数
7、beforeDestroy 生命周期是实例销毁前,在这个函数内还是可以操作实例的。
8、销毁完成后,再执行 destroyed,此时已不能再操作实例了。生命周期整个流程到此时就已经全部结束了。
})
附:组件选择的顺序
组件选项应该有统一的顺序,具体的顺序如下所示:
export default {
name: ‘’,
mixins: [],
components: {},
props: {},
data() {},
computed: {},
watch: {},
created() {},
mounted() {},
destroyed() {},
mixins: [],
components: {},
props: {},
data() {},
computed: {},
watch: {},
created() {},
mounted() {},
destroyed() {},