大家好,欢迎来到IT知识分享网。
生命周期 ( Life Cycle )是指一个组件从 创建 -> 更新 -> 销毁 的整个阶段。
一、生命周期的分类
生命周期大致可以分为三个阶段:
1. 创建阶段 beforeCreate –> created –> beforeMount –> mounted
2. 更新阶段 beforeUpdate –> updated
3. 销毁阶段 beforeDestroy –> destroyed
生命周期图示如下图所示:
二、生命周期函数&生命周期钩子
1. 创建阶段
beforeCreate –> 创建阶段的第1个生命周期函数,组件的methods,data尚未定义,处于不可用。
created –> 创建阶段的第2个生命周期函数,data和methods定义,无法操作真是DOM。
beforeMount –> 创建阶段的第3个生命周期函数,内存编译好的HTML结构准备渲染到浏览器中,此时浏览器中还没有当前组件的DOM结构,无法操作DOM。
mounted –> 创建阶段的第4个生命周期函数,已经渲染内存的HTML结构到浏览器中,可操作真是DOM。
2. 更新阶段
beforeUpdate –> 运行阶段的第1个生命周期函数,将要根据数据变化后、最新的数据,重新渲染组件的模板结构,数据是最新的,但页面不是最新的
updated –> 运行阶段的第2个生命周期函数,完成了最新数据重新渲染到组件的DOM结构,数据和页面都是最新的
3.销毁阶段
beforeDestroy –> 销毁阶段的第1个生命周期函数,组件还处于正常工作状态
destroyed –> 销毁阶段的第2个生命周期函数,组件销毁完成
三、生命周期函数补充
keep-alive
添加 keep-alive 标签后会增加 activated 和 deactivated 这两个生命周期函数,初始化操作放在 activated里面,一旦切换组件,因为组件是缓存的而没有被销毁,所以它不会执行销毁阶段的钩子函数,所以移除操作需要放在 deactivated 里面,在里面进行一些善后操作,这个时候 created 钩子函数只会组件首次加载时执行一次,销毁的钩子函数一直没有执行。
activated(组件激活时):被 keep-alive 缓存的组件激活时调用,可以初始化一些数据。
deactivated(组件停用时):被 keep-alive 缓存的组件停用时调用。在deactived里面,在里面进行一些善后操作。
四、父子组件生命周期
父组件:
import livechidren from "./livechidren.vue";
export default {
components: { livechidren },
data() {
return {
text: "",
};
},
methods: {
handle() {
this.$destroy();
},
},
beforeCreate() {
console.log("父组件————beforeCreate...");
},
created() {
console.log("父组件————create...");
},
beforeMount() {
console.log("父组件————beforeMount...");
},
mounted() {
console.log("父组件————mounted...");
},
beforeUpdate() {
console.log("父组件————beforeUpdate...");
},
updated() {
console.log("父组件————updated...");
},
beforeDestroy() {
console.log("父组件————beforeDestroy...");
},
destroyed() {
console.log("父组件————destroyed...");
},
};