在第一次加载 Vue 页面时,会依次触发以下生命周期钩子(以 Vue 2 和 Vue 3 大体一致的流程为准):
beforeCreate
实例刚被创建,数据观测 (data observer) 和事件配置尚未开始,data
、methods
等选项还未初始化,不能访问data
中的数据。created
实例已经创建完成,完成了数据观测、属性和方法的运算,watch/event
事件回调已配置。此时可以访问data
、调用methods
,但$el
还不存在,页面尚未渲染。常用于发起异步请求(如axios
获取数据)。beforeMount
模板编译完成,即将开始挂载。此时$el
已被创建,但尚未将VNode
渲染到页面上,页面仍为空。mounted
组件已挂载到 DOM 中,$el
被新创建的vm.$el
替换,并插入父容器。此时可以访问 DOM 元素,常用于操作 DOM、启动定时器、或在数据加载后执行依赖 DOM 的操作。
总结:
第一次加载时,按顺序触发的生命周期钩子为:beforeCreate
→created
→beforeMount
→mounted
⚠️ 注意:
beforeUpdate
和updated
只在数据更新时触发,首次加载不会执行。destroyed
/unmounted
是组件销毁时才触发。
THE END