生命周期示意图如下所示:
- beforeCreate:组件初始化之前触发该事件
- created:组件初始化完毕触发该事件
- beforeMount:Vue应用对象挂载DOM结点之前触发该事件
- mounted:DOM结点挂载成功之后触发该事件
- beforeUpdate:数据更新之前触发该事件
- updated:数据更新之后触发该事件
- beforeUnmount:DOM结点卸载之前触发该事件
- unmountd:结点卸载之后触发该事件
由此可见触发事件基本是成对出现,具体测试代码如下所示:
html
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<div id="app">
<div>
<span>文本框</span>
<p>Message is:{{message}}</p>
<input v-model="message" placeholder="edit me" />
</div>
</div>
<script>
const { createApp } = Vue;
createApp({
data(){
return {
message: '曹德华'
}
},
beforeCreate() {
console.log(`组件创建之前调用`);
},
created() {
console.log(`组件已创建`);
},
beforeMount() {
console.log(`组件挂载DOM之前调用`);
},
mounted() {
console.log(`组件已挂载DOM`);
},
beforeUpdate() {
console.log(`数据更新之前调用`);
},
updated() {
console.log(`数据已更新`);
}
}).mount('#app');
</script>
控制台输出结果:
组件创建之前调用
组件已创建
组件挂载DOM之前调用
组件已挂载DOM
修改输入框的内容,额外输出内容:
数据更新之前调用
数据已更新