【Vue】父子组件的生命周期

个人博客:haichenyi.com。感谢关注

一. 目录

二. Vue的生命周期​

  Vue的生命周期指的是Vue实例从创建到销毁的整个过程。在这个过程中,Vue提供了一些生命周期钩子函数,允许我们在不同的阶段执行自己的代码。常见的钩子有beforeCreate、created、beforeMount、mounted、beforeUpdate、updated、beforeDestroy、destroyed这些。每个钩子对应不同的阶段,比如创建、挂载、更新、销毁等。

三. 挂载阶段(父子组件初次渲染)

执行顺序

父 beforeCreate → 父 created → 父 beforeMount  
    ↓  
子 beforeCreate → 子 created → 子 beforeMount → 子 mounted  
    ↑  
父 mounted

流程详解

  1. 父组件初始化
  • 父组件执行到 beforeMount 后暂停,开始处理模板中的子组件。
  1. 子组件完整生命周期
  • 子组件完成自身的 beforeCreate → created → beforeMount → mounted 流程。
  1. 父组件完成挂载​
  • 子组件全部挂载后,父组件触发 mounted。

关键结论​

  • 子组件的 mounted 先于父组件执行​​: 父组件必须等待所有子组件挂载完成后,自身才会标记为已挂载。
  • created 阶段可访问父组件数据​​: 父组件的 created 在子组件之前完成,因此子组件在 created 中可通过 props 获取父组件数据。

四. 更新阶段(父组件数据变化引发子组件更新)

执行顺序

父 beforeUpdate  
    ↓  
子 beforeUpdate → 子 updated  
    ↑  
父 updated

流程详解

  1. 父组件更新触发
  • 父组件数据变化后,先触发自身 beforeUpdate。
  1. 子组件更新流程
  • 子组件接收新的 props,执行 beforeUpdate → updated。
  1. 父组件完成更新
  • 子组件更新完成后,父组件触发 updated。

关键结论​

  • 子组件的更新在父组件更新周期内完成​​: 父组件的 updated 钩子需要等待所有子组件更新完毕。

五. 销毁阶段(父组件销毁引发子组件销毁)

​执行顺序​

父 beforeDestroy  
    ↓  
子 beforeDestroy → 子 destroyed  
    ↑  
父 destroyed

流程详解​

  1. ​​父组件准备销毁
  • 父组件触发 beforeDestroy,开始清理自身资源。
  1. 子组件销毁
  • 子组件依次执行 beforeDestroy → destroyed。
  1. 父组件完成销毁
  • 所有子组件销毁后,父组件触发 destroyed。

关键结论

  • 子组件的销毁先于父组件完成​​: 父组件必须等待所有子组件销毁后,自身才会销毁。

六. 常见误区与最佳实践

误区

  1. ​​在父组件的 mounted 中直接操作子组件DOM
    • 错误:父组件的 mounted 触发时,子组件已挂载,但若子组件有异步渲染逻辑(如 v-if),DOM可能仍未就绪。
    • 正确:使用 this.$nextTick 确保子组件DOM更新完成。
  2. 在子组件的 created 中依赖父组件的异步数据
    • 错误:父组件通过异步请求传递 props 给子组件时,子组件的 created 可能早于父组件数据返回。
    • 正确:在子组件中使用 watch 监听 props 变化,或在父组件中通过 v-if 控制子组件渲染时机。

最佳实践
3. 数据初始化
- 父组件数据在 created 中加载,子组件在 created 中通过 props 接收父数据。
4. DOM 操作
- 子组件的 mounted 是最早可安全操作自身 DOM 的钩子。
5. ​​资源释放
- 在 beforeDestroy 中手动清除定时器、事件监听等,避免内存泄漏。

七. 总结

  父子组件生命周期的核心规律是 ​​父组件进入阶段后等待子组件完成,再继续自身流程。 掌握这一顺序,可以精准控制数据流和DOM操作时机,避免因生命周期混乱导致的Bug。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

海晨忆

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值