mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
380 字
1 分钟
生命周期钩子:生老病死,Vue 组件的一生
2025-12-14

组件的一生#

万物皆有灵,Vue 组件也不例外。它们从被创建(Creation),到挂载(Mounting),到更新(Updating),最后销毁(Unmounting),走完了一生。而我们开发者,就是那个掌握生杀大权的神。

Vue 3 的变化#

在 Vue 2 中,我们熟悉的是 created, mounted, destroyed。在 Vue 3 的 Composition API 中,这些变成了 onMounted, onUnmounted 等等。

最让我困惑的是 setup()。它在 beforeCreatecreated 之前执行。这意味着在 setup 里面,我们不需要写这一类的钩子了,直接写逻辑就行。

实际应用中的坑#

我曾经遇到过一个 Bug,在 onMounted 里面去获取 DOM 元素的高宽。理论上这时候 DOM 已经渲染好了,对吧?

onMounted 能保证当前组件的 DOM 已经插入,并等待同步子组件挂载,但不会替你等待异步组件或网络数据。nextTick 只等待当前这轮 DOM 更新;如果尺寸依赖异步内容,更稳妥的做法是监听数据完成、让子组件发出 ready 事件,或者使用 ResizeObserver

为什么会这样?#

真正让我绕晕的不是钩子名字,而是“谁在等谁”:父组件、同步子组件、异步组件和数据请求有各自的完成时机。把依赖条件写清楚,比在所有地方补一个 nextTick 靠谱得多。

生老病死

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

生命周期钩子:生老病死,Vue 组件的一生
https://blog.luozili.work/posts/vue-learning-4/
作者
llbzow
发布于
2025-12-14
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录

💬
🎀