vue的生命周期详解

Vue 的生命周期是指 Vue 实例从创建到销毁的过程,总共分为八个阶段:创建前/后,载入前/后,更新前/后,销毁前/销毁后。每个阶段对应一个特定的钩子函数,这些钩子函数允许我们在 Vue 实例的不同状态下添加自定义代码。

以下是 Vue 的生命周期钩子函数的详细解释:

  1. beforeCreate(创建前)

在实例初始化之后,数据观测(data observer) 和 event/watcher 事件配置之前被调用。此时,组件的配置对象还未被创建,不能访问到 data、computed、watch、methods 上的方法和数据。

  1. created(创建后)

在这个阶段已经完成数据观测等初始化工作,但是尚未挂载 DOM,$el 属性目前不可见。此时可以访问到 data、computed 属性,但不能访问到 DOM。

  1. beforeMount(载入前)

在挂载开始之前被调用:相关的 render 函数首次被调用。此时虚拟 DOM 已经创建完成,即将开始渲染,但此时还没有挂载到页面上,所以无法看到渲染后的结果。

  1. mounted(载入后)

el 被新创建的 vm.el替换,并挂载到实例上去之后调用该钩子。如果root实例挂载了一个in−document元素,当mounted被调用时vm.el 也在文档内。此时,组件已经挂载到页面上,可以访问到 DOM 元素。

  1. beforeUpdate(更新前)

数据更新时调用,发生在虚拟 DOM 打补丁之前。可以在更新之前访问现有的 DOM,比如手动移除已添加的事件监听器。这里适合在更新之前访问现有的 DOM,比如手动移除已添加的事件监听器。

  1. updated(更新后)

由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子。当这个钩子被调用时,组件 DOM 已经更新,所以你现在可以执行依赖于 DOM 的操作。然而在大多数情况下,你应该避免在此期间更改状态,因为这可能会导致更新无限循环。该钩子在服务器端渲染期间不被调用。

  1. beforeDestroy(销毁前)

实例销毁之前调用。在这一步,实例仍然完全可用。此时,Vue 实例指示的所有东西仍然可用,比如属性、方法、DOM 元素等。这是进行销毁前清理工作(比如:移除事件监听器、销毁定时器、解绑全局状态等)的好时机。

  1. destroyed(销毁后)

Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑,所有的事件监听器都会被移除,所有的子实例也会被销毁。此时,组件已被完全销毁,其所有的数据和事件监听器都已被移除,无法再访问。

通过合理利用这些生命周期钩子,我们可以更好地控制 Vue 组件的行为,并在不同的阶段执行特定的操作。

相关推荐
知识分享小能手7 分钟前
Vue3 学习教程,从入门到精通,Axios 在 Vue 3 中的使用指南(37)
前端·javascript·vue.js·学习·typescript·vue·vue3
伍哥的传说32 分钟前
Mitt 事件发射器完全指南:200字节的轻量级解决方案
vue.js·react.js·vue3·mitt·组件通信·事件管理·事件发射器
程序员码歌3 小时前
【零代码AI编程实战】AI灯塔导航-总结篇
android·前端·后端
用户21411832636023 小时前
免费玩转 AI 编程!Claude Code Router + Qwen3-Code 实战教程
前端
一枚小小程序员哈3 小时前
基于Vue + Node能源采购系统的设计与实现/基于express的能源管理系统#node.js
vue.js·node.js·express
小小愿望5 小时前
前端无法获取响应头(如 Content-Disposition)的原因与解决方案
前端·后端
小小愿望5 小时前
项目启功需要添加SKIP_PREFLIGHT_CHECK=true该怎么办?
前端
烛阴5 小时前
精简之道:TypeScript 参数属性 (Parameter Properties) 详解
前端·javascript·typescript
海上彼尚6 小时前
使用 npm-run-all2 简化你的 npm 脚本工作流
前端·npm·node.js
开发者小天6 小时前
为什么 /deep/ 现在不推荐使用?
前端·javascript·node.js