vue生命周期以及父子组件生命周期函数的执行顺序

本文详细介绍了Vue组件的8个生命周期函数,包括beforeCreate、created、beforeMount、mounted等,以及在不同场景如创建、更新、销毁时的执行顺序。同时,探讨了父子组件生命周期函数的交互,解析了在数据更新和销毁过程中父子组件的钩子调用顺序。
摘要由CSDN通过智能技术生成

1.vue的8个生命周期函数
beforecreate(创建前)在这一阶段开始处理实例的data,计算属性,方法,watch监听属性等配置
2.created(创造后)在这一阶段实例的计算属性,方法,watch监听属性等已经配置完成,但是组件还没有被挂载
3.beforeMount(挂载前)组件开始挂载到页面上。
4.mouted(挂载后)组件挂载已经完成,可以在此进行ajax请求,浏览器中已经含有组件的dom结构,这也是最早可以操作dom的阶段。
5.beforeUpdate(更新前)当组件中进行数据更新时触发,此时data已经更新,但是页面中与data相关的dom还没更新。
6.updated(更新后)此时已经根据最新的data,完成了页面的更新。
7.beforeDestroy(销毁前)组件准备开始销毁工作,但仍可以正常工作的阶段。
8.destroyed(销毁后)组件已经销毁完毕。
组件初次加载的执行顺序
当组件第一次被加载时,会触发beforecreate(创造前)created(创造后)beforeMount(挂载前) mouted(挂载后)四个钩子函数(生命周期函数)
组件更新时生命周期函数的执行顺序
当组件更新时,触发的钩子函数为 beforeUpdate --> updated

组件销毁时生命周期函数执行顺序
当组件销毁时,触发的钩子函数为 beforeDestroy —> destoryed

父子组件的生命周期函数
父子组件第一次加载时触发的生命周期函数以及执行顺序
创建两个组件,并加入以下代码
父组件//父组件创造前
beforeCreate() {
console.log(“父组件正在被创造”);
},
//父组件创造后
created() {
console.log(“父组件已经创造”);
},
//父组件挂载前
beforeMount() {
console.log(“父组件正在被挂载”);
},
//父组件挂载后
mounted() {
console.log(“父组件已经挂载”);
},
//父组件更新前
beforeUpdate() {
console.log(“父组件正在被更新”);
},
//父组件更新后
updated() {
console.log(“父组件已经被更新”);
},
//父组件销毁前
beforeDestroy() {
console.log(“父组件正在被销毁”);
},
//父组件销毁后
destroyed() {
console.log(“父组件已经被销毁”);
},
子组件
//子组件创造前
beforeCreate() {
console.log(“子组件正在被创造”);
},
//子组件创造后
created() {
console.log(“子组件已经创造”);
},
//子组件挂载前
beforeMount() {
console.log(“子组件正在被挂载”);
},
//子组件挂载后
mounted() {
console.log(“子组件已经挂载”);
},
//子组件更新前
beforeUpdate() {
console.log(“子组件正在被更新”);
},
//子组件更新后
updated() {
console.log(“子组件已经被更新”);
},
//子组件销毁前
beforeDestroy() {
console.log(“子组件正在被销毁”);
},
//子组件销毁后
destroyed() {
console.log(“子组件已经被销毁”);
},
运行代码后发现控制台输出以下结果
在这里插入图片描述
由此可以发现执行顺序是
父beforeCreate --> 父caeated --> 父beforeMount --> 子beforeCreate --> 子created --> 子beforeMount --> 子mounted -->父mounted
父子组件更新时触发的声明周期函数以及执行顺序
给父组件添加一个data,然后定义一个按钮,点击后a+1
data() {
return {
a: 1,
};
},
在这里插入图片描述
由此看出父子组件数据更新时钩子函数执行顺序为
父beforeUpdate --> 子beforeUpdate --> 子updated --> 父updated

父子组件销毁时触发的生命周期函数执行顺序
父beforeDestroy --> 子beforeDestroy --> 子destroyed --> 父destroyed

  1. 生命周期方法详解
    钩子函数 详情 场景 备注
    beforeCreate 实例初始化之后,组件被创建时期,这个时候的 el,data,message 都是 underfined 可以加入 loading 事件;在服务器端的应用场景中,这个时候发送数据请求比较多一些
    created 实例创建完成后,data、methods 被初始化 结束 loading 事件;推荐这个时候发送请求数据,尤其是返回的数据与绑定事件有关时
    beforeMount 挂载初始之前,完成 el 初始化,render 被初次调用 也可以发送数据请求 在服务器端渲染期间不会被调用
    mounted 完成挂载 获取 el 中 DOM 元素,进行 DOM 操作;如果返回的数据操作依赖 DOM 完成,推荐这个时候发送数据请求 在服务器端渲染期间不会被调用
    beofreUpdate 挂载开始之前调用 挂载完成之前访问现有 DOM ,比如手动移除已添加的事件监听器;也可以进一步修改数据 在服务器渲染期间不会被调用,只有初次渲染会在服务端调用
    updated 由于数据更改,重新渲染界面时调用 可执行依赖于 DOM 的操作 服务器端渲染期间不会被调用
    activated keep-alive 组件激活时调用 服务器端渲染期间不会被调用
    deactivated 组件停用时调用 服务器端渲染期间不会被调用
    beforeDestroy 实例销毁之前调用 删除钱发出确认信息;清理定时器 服务器端渲染期间不会被调用
    destroyed 实例销毁后调有。调用后,所有东西都会被解绑,所有的事件监听器会被移动,子实例也会被销毁 提示已删除 服务器端渲染期间不会被调用
    errorCaptured 当捕获一个来自子孙组件的错误时被调用。收到三个参数:错误对象、发生错误的组件实例以及一个包含错误来源信息的字符串。可返回 false 以阻止该错误继续向上传播。 修改组件状态 2.5.0新增
<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="UTF-8"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue生命周期钩子函数指的是在组件实例化、渲染、更新和销毁等不同阶段执行的一些特定函数。下面是 Vue 组件生命周期钩子函数及其执行顺序: 1. beforeCreate:在实例创建之被调用。此时组件的数据和方法都还未初始化。 2. created:在实例创建完成之后被调用。此时组件的数据已经初始化,但 DOM 还未渲染。 3. beforeMount:在组件挂载到 DOM 之被调用。此时模板已经编译完成,但还未挂载到页面中。 4. mounted:在组件挂载到 DOM 后被调用。此时组件已经被渲染并插入到页面中,可以进行 DOM 操作。 5. beforeUpdate:在数据更新之被调用。此时组件还未重新渲染,但数据已经更新。 6. updated:在数据更新之后被调用。此时组件已经重新渲染,可以进行 DOM 操作。 7. beforeDestroy:在组件销毁之被调用。此时组件还存在,可以进行一些清理工作。 8. destroyed:在组件销毁之后被调用。此时组件已经从 DOM 中移除,事件监听和定时器等资源都已经被销毁。 对于父子组件,它们的生命周期钩子函数执行顺序如下: 1. 父组件的 beforeCreate 和 created 钩子函数执行。 2. 子组件的 beforeCreate 和 created 钩子函数执行。 3. 子组件的 beforeMount 钩子函数执行。 4. 子组件的 mounted 钩子函数执行。 5. 父组件的 beforeMount 钩子函数执行。 6. 父组件的 mounted 钩子函数执行。 7. 数据更新时,先执行组件的 beforeUpdate 钩子函数,然后执行组件的 beforeUpdate 钩子函数,再执行组件的 updated 钩子函数,最后执行组件的 updated 钩子函数。 8. 组件销毁时,先执行组件的 beforeDestroy 钩子函数,然后执行组件的 beforeDestroy 钩子函数,最后执行组件的 destroyed 钩子函数,再执行组件的 destroyed 钩子函数。 这是 Vue 组件生命周期钩子函数的一般执行顺序,但在实际开发中可能会有特殊情况,需要根据具体需求来使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

故事只若初见

坚持就是胜利

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值