Vue生命周期

发布于:2024-05-09 ⋅ 阅读:(31) ⋅ 点赞:(0)

Vue.js 的生命周期是一个非常重要的概念,它指的是 Vue 实例从创建到销毁所经历的一系列过程。这些过程被抽象为不同的生命周期钩子,开发者可以在这些钩子中添加自己的代码,以在特定的阶段执行特定的操作。

Vue.js 的生命周期可以分为以下几个阶段:

  1. 创建阶段

    • beforeCreate:在实例初始化之后,数据观测(data observer) 和 event/watcher 事件配置之前被调用。此时组件的选项对象还未被创建,el 和 data 并未初始化,因此无法访问到 methods,computed,data 上的方法和数据。
    • created:在实例创建完成后被立即调用。在这一步,实例已完成以下的配置:数据观测(data observer),属性和方法的运算,watch/event 事件回调。然而,挂载阶段还没开始,$el 属性目前不可见。
  2. 挂载阶段

    • beforeMount:在挂载开始之前被调用:相关的 render 函数首次被调用。此阶段尚不能访问到真实的 DOM 元素,Vue.js 会在内存中编译模板字符串,然后替换挂载的元素。
    • mounted:el 被新创建的 vm.el替换,并挂载到实例上去之后调用该钩子。如果root实例挂载了一个in−document元素,当mounted被调用时vm.el 也在文档内。
  3. 更新阶段

    • 当数据发生变化时,Vue.js 会重新渲染视图。在这个过程中,有两个生命周期钩子会被调用。
    • beforeUpdate:数据更新时调用,发生在虚拟 DOM 打补丁之前。这里适合在更新之前访问现有的 DOM,比如手动移除已添加的事件监听器。
    • updated:由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子。当这个钩子被调用时,组件 DOM 已经更新,所以你现在可以执行依赖于 DOM 的操作。然而在大多数情况下,你应该避免在此期间更改状态,因为这可能会导致更新无限循环。
  4. 销毁阶段

    • beforeDestroy:实例销毁之前调用。在这一步,实例仍然完全可用。
    • destroyed:Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也都会被销毁。

此外,Vue 2.x 中还有一个 activated 和 deactivated 钩子,这两个钩子用于 Vue 的 <keep-alive> 组件。当组件被激活(即被插入到 DOM 中)时,activated 钩子会被调用;当组件被停用(即从 DOM 中移除)时,deactivated 钩子会被调用。

Vue 3.x 在生命周期钩子方面做了一些调整,但大体上仍然是相似的。


网站公告

今日签到

点亮在社区的每一天
去签到