vue生命周期

源码 2024-9-10 21:50:32 105 0 来自 中国
1.什么是 vue 生命周期?有什么作用?

Vue 实例有⼀个完备的⽣命周期,也就是从开始创建、初始化数据、编译模版、挂载Dom -> 渲染、更新 -> 渲染、卸载 等⼀系列过程,称这是Vue的⽣命周期。
各个生命周期作用


  • beforeCreate(创建前) :组件实例被创建之初,组件的属性收效之前
  • created(创建后) :组件实例已经完全创建,属性也绑定,但真实 dom 还没有天生,$el 还不可用
  • beforeMount(挂载前) :在挂载开始之前被调用:相干的 render 函数初次被调用
  • mounted(挂载后) :在el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子
  • beforeUpdate(更新前) :组件数据更新之前调用,真实DOM还没被渲染
  • update(更新后) :组件数据更新之后
  • activated(激活前) :keep-alive专属,组件被激活时调用
  • deactivated(激活后) :keep-alive专属,组件被销毁时调用
  • beforeDestory(销毁前) :组件销毁前调用
  • destoryed(销毁后) :组件销毁前调用
2. Vue子组件和父组件实行次序


  • 加载渲染过程:beforeCreate(父) —> created(父)—>beforeMount(父)—>beforeCreate(子)—>created(子)—>beforeMount(子)—>mounted(子)—>mounted(父)
  • 更新过程:beforeUpdate(父) —> beforeUpdate(子) —> update(子) —> update(父)
  • 销毁过程:beforeDestory(父) —> beforeDestory(子) —> destoryed(子) —> destoryed(父)
3.简述每个周期具体恰当哪些场景


  • beforeCreate:在new一个vue实例后,只有一些默认的生命周期钩子和默认变乱,其他的东西都还没创建。在beforeCreate生命周期实行的时间,data和methods中的数据都还没有初始化。不能在这个阶段使用data中的数据和methods中的方法
  • create: data 和 methods都已经被初始化好了,假如要调用 methods 中的方法,大概使用 data 中的数据,最早可以在这个阶段中使用
  • beforeMount:实行到这个钩子的时间,在内存中已经编译好了模板了,但是还没有挂载到页面中,此时,页面照旧旧的
  • mounted:实行到这个钩子的时间,就体现Vue实例已经初始化完成了。此时组件离开了创建阶段,进入到了运行阶段。 假如我们想要通过插件使用页面上的DOM节点,最早可以在和这个阶段中举行
  • beforeUpdate: 当实行这个钩子时,页面中的表现的数据照旧旧的,data中的数据是更新后的,页面还没有和最新的数据保持同步
  • updated:页面表现的数据和data中的数据已经保持同步了,都是最新的
  • beforeDestory: Vue实例从运行阶段进入到了销毁阶段,这个时间上全部的 data 和 methods , 指令, 过滤器 ……都是处于可用状态。还没有真正被销毁
  • destroyed: 这个时间上全部的 data 和 methods , 指令, 过滤器 ……都是处于不可用状态。组件已经被销毁了。
4. created 和 mounted 的区别


  • created:在模板渲染成html前调用,即通常初始化某些属性值,然后再渲染成视图。
  • mounted:在模板渲染成html后调用,通常是初始化页面完成后,再对html的dom节点举行一些须要的使用。
5. vue请求异步数据在哪个周期函数?

created、beforeMount、mounted中举行调用。由于在这三个钩子函数中,data 已经创建,可以将服务端端返回的数据举行赋值。
保举在 created 钩子函数中,长处:

  • 能更快获取到服务端数据,镌汰页面加载时间,用户体验更好;
  • SSR不支持 beforeMount 、mounted 钩子函数,放在 created 中有助于同等性。
6. keep-alive 中的生命周期哪些

keep-alive是 Vue 提供的一个内置组件,用来对组件举行缓存——在组件切换过程中将状态生存在内存中,防止重复渲染DOM。
假如为一个组件包裹了 keep-alive,那么它会多出两个生命周期:deactivated、activated。同时,beforeDestroy 和 destroyed 就不会再被触发了,由于组件不会被真正销毁。
当组件被换掉时,会被缓存到内存中、触发 deactivated 生命周期;当组件被切返来时,再去缓存里找这个组件、触发 activated钩子函数。
7. 请具体说下你对vue生命周期的明白?

统共分为8个阶段创建前/后,载入前/后,更新前/后,销毁前/后。

  • 创建前/后: 在beforeCreated阶段,vue实例的挂载元素$el和数据对象data都为undefined,还未初始化。在created阶段,vue实例的数据对象data有了,$el还没有。
  • 载入前/后:在beforeMount阶段,vue实例的$el和data都初始化了,但照旧挂载之前为假造的dom节点,data.message还未替换。在mounted阶段,vue实例挂载完成,data.message乐成渲染。
  • 更新前/后:当data变革时,会触发beforeUpdate和updated方法。
  • 销毁前/后:在实行destroy方法后,对data的改变不会再触发周期函数,分析此时vue实例已经解除了变乱监听以及和dom的绑定,但是dom结构依然存在。
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-24 10:50, Processed in 0.182154 second(s), 33 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表