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 组件的行为,并在不同的阶段执行特定的操作。

相关推荐
怕浪猫1 小时前
FDE 如何正确解决现场项目工程性的问题
前端·后端·ai编程
西瓜太郎12341 小时前
外层模型卡片与分组详情成功率不一致,应该怎么排查?
前端·typescript·go·软件工程·react
GreenTea1 小时前
vLLM 与 SGLang KV Cache 底层实现机制深度调研报告
前端·后端·算法
毕业设计7034 小时前
(免费领源码) 基于微信小程序的预制菜商城的设计与实现25172-java、PHP、python、C#、小程序、大数据、单片机、网络工程等)
vue.js·python·mysql·微信小程序·pycharm·微信开发者工具·推荐算法
xifangge20254 小时前
AGENTS.md 怎么写?涵盖 Java、Python、Vue、Go 的 8 套开箱即用模板
java·vue.js·python
几何心凉4 小时前
没有万能模型:我用 AiiOnly Token Plan,把多款大模型的长处拼进同一个项目
前端
kyriewen4 小时前
Claude Code 的额度今天缩水了17%——官方公告上写的是"永久提高25%"
前端·ai编程·claude
雪芽蓝域zzs5 小时前
vue解构平铺VS对象包裹
前端·javascript·vue.js
风骏时光牛马6 小时前
从零到实战,完整AI学习路线
前端
三十而立洋6 小时前
深入理解 Monorepo:子包安装依赖
前端·前端工程化