(Vue)生命周期:一场奇妙的冒险

嗨,亲爱的Vue冒险家们!今天我们将踏上一场奇妙的冒险,穿越Vue实例的生命周期。Vue实例就像是一个小精灵,经历着诞生、成长、更新和最终销毁的过程。让我们一起来揭开这个神秘的面纱吧!

第一站:beforeCreate(创建前)

在这个阶段,Vue实例还没有开始观测数据和初始化事件。就像小精灵还未穿上魔法袍一样,此时的实例什么都干不了,连自己的数据都还没认识呢!所以,别指望在这个时候访问到data、computed、watch、methods上的数据和方法哦!

此时data 的响应式追踪、event/watcher 都还没有被设置

第二站:created(创建后)

欢迎来到实例的创建后!实例配置都已经完成,包括了data、computed、watch、methods等等。但是注意,此时渲染得到的节点还没挂载到DOM上,就像是小精灵的魔法棒还没点亮一样。所以,$el属性也还不能被访问哦!

第三站:beforeMount(挂载前)

在挂载开始之前,相关的render函数首次被调用。这时候,实例已经完成了一系列的配置,包括编译模板、生成HTML。但是,别高兴得太早,这时候HTML还没挂载到页面上呢!

第四站:mounted(挂载后)

嘿,终于挂载成功了!实例的 <math xmlns="http://www.w3.org/1998/Math/MathML"> e l 属性被新创建的 v m . el属性被新创建的vm. </math>el属性被新创建的vm.el替换,挂载到实例上去了。这就像小精灵的魔法棒终于点亮了一样。在这一刻,实例已完成模板中的HTML渲染到页面中。而且,这个时候可以进行一些酷炫的Ajax交互了!

实例已完成以下的配置:用上面编译好的 html 内容替换 el 属性指向的 DOM 对象。完成模板中的 html 渲染到 html 页面中。此过程中进行 ajax 交互。

第五站:beforeUpdate(更新前)

在这一站,响应式数据更新了,但是对应的真实DOM还没有被渲染。就像是小精灵知道了一些新的魔法,但是还没展示给大家看一样。这时候可以做一些准备工作,但是别急着在这时候改变状态,否则可能会陷入更新的无限循环哦!

第六站:updated(更新后)

欢迎来到更新后的世界!虚拟DOM重新渲染和打补丁完成,真实DOM已经根据响应式数据的变化更新了。这时候,组件的DOM已经更新,可以执行依赖于DOM的操作。 不过,记得要谨慎操作,避免更新陷阱,因为这个时候状态的改变可能导致更新的无限循环。

第七站:beforeDestroy(销毁前)

实例即将销毁,但在这一刻,它仍然完全可用。就像小精灵即将回到自己的仙界,但在这个瞬间,你还能和它亲密接触,获取到实例的一切。

第八站:destroyed(销毁后)

告别了,实例。在这一刻,Vue实例指向的所有东西都会解绑定,所有的事件监听器都会被移除,所有的子实例也会被销毁。就像是小精灵完全回到了自己的仙界,不再与我们相隔。

特别剧集:keep-alive的奇妙冒险

除了上面的主要剧集,我们还有一个特别的剧集,就是keep-alive的独有生命周期。在这个剧集中,组件在切换时不会销毁,而是被缓存在内存中。在缓存渲染后,会执行activated和deactivated钩子函数,就像是小精灵在休息之后又回到了我们的世界。

用 keep-alive 包裹的组件在切换时不会进行销毁,而是缓存到内存中并执行 deactivated 钩子函数,命中缓存渲染后会执行 activated 钩子函数。

总结:Vue实例生命周期的奇妙冒险

通过这场奇妙的冒险,我们穿越了Vue实例的生命周期,将抽象的概念化身为一个充满魔法和幽默的小精灵。从诞生、成长到最终的告别,每个阶段都像是一集集精彩的剧集,让我们更深入地了解了Vue实例的种种状态和能力。

创建阶段 ,小精灵还未穿上魔法袍,实例什么都做不了,就如同beforeCreate阶段,数据还未观测,方法还未初始化。

创建后 ,小精灵的魔法棒点亮了,但还未展示给大家看,正如created阶段,实例配置完成,但节点还没挂载到DOM上。

挂载前 ,小精灵的魔法棒即将点亮,就如同beforeMount阶段,相关的render函数首次被调用,但HTML还没挂载到页面上。

挂载后 ,终于挂载成功了,小精灵的魔法棒点亮了,实例的$el属性被挂载到DOM上,HTML渲染完成,可以进行一些酷炫的交互。

更新前 ,小精灵学到了新的魔法,但还未展示给大家看,就如同beforeUpdate阶段,数据更新了,但真实DOM还未渲染。

更新后,小精灵展示了新的魔法,实例的虚拟DOM重新渲染,真实DOM更新完成,组件可以执行依赖于DOM的操作。

销毁前 ,小精灵即将回到仙界,但在这一刻,仍然完全可用,就如同beforeDestroy阶段,可以获取到实例的一切。

销毁后,告别了实例,小精灵完全回到了仙界,实例的所有东西都解绑定,事件监听器移除,子实例销毁。

特别剧集 中,我们探索了keep-alive的奇妙冒险,组件在切换时不会销毁,而是被缓存在内存中,再次回到我们的世界执行activateddeactivated钩子函数。

这场冒险让我们更深入地理解了Vue实例的生命周期,每个阶段都如同一部精彩的剧集,为我们的代码注入了更多的灵活性和强大的魔法。在Vue的世界中,让我们继续探索,发现更多的奇迹与精彩!希望这场冒险为你带来了启发,让你在Vue的旅程中更加游刃有余。

相关推荐
柏箱几秒前
使用JavaScript写一个网页端的四则运算器
前端·javascript·css
TU^1 分钟前
C语言习题~day16
c语言·前端·算法
计算机学姐17 分钟前
基于微信小程序的调查问卷管理系统
java·vue.js·spring boot·mysql·微信小程序·小程序·mybatis
学习使我快乐013 小时前
JS进阶 3——深入面向对象、原型
开发语言·前端·javascript
bobostudio19953 小时前
TypeScript 设计模式之【策略模式】
前端·javascript·设计模式·typescript·策略模式
黄尚圈圈4 小时前
Vue 中引入 ECharts 的详细步骤与示例
前端·vue.js·echarts
浮华似水5 小时前
简洁之道 - React Hook Form
前端
正小安7 小时前
如何在微信小程序中实现分包加载和预下载
前端·微信小程序·小程序
小飞猪Jay9 小时前
C++面试速通宝典——13
jvm·c++·面试