Vue生命周期

Vue生命周期

生命周期概念

官方解释

​ 每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。同时在这个过程中也会运行一些叫做生命周期钩子的函数,这给了用户在不同阶段添加自己的代码的机会。

简单理解

​ 简单来说就是Vue实例被创建时会经过很多步骤,比如beforeCreate(创建前),created(完成创建),beforeMount(挂载前),mounted(完成挂载)…

在这些特殊时期,Vue提供了一些名为生命周期钩子的函数,也就是这些函数会在这些时期执行。你可以在这些函数中添加自己的代码。

示例代码

<html>
  <body>
  	<div id="root">
        <h1 :style="{opacity}">欢迎使用VUE</h1>
    </div>
  </body>
  
  <script>
  	new Vue({
            el:'#root',
            data:{
                opacity:1
            },
      //当网页元素全部挂在完成时执行mount()中的代码
      			mounted():{
      					setInterval(()=>{
      						this.opacity -=0.01
      						if(this.opacity <= 0) this.opacity = 1
    						},16)
    				},
        })
  </script>
</html>

深入生命周期

JSObject
名词解释
挂载阶段

Init Events & Lifecycle:初始化:生命周期、事件,但数据处理还没开始。

beforeCreate:这时无法通过vm访问到data中的数据、methods中的方法。

Init injections & reactivity:初始化:数据监测、数据代理。

created:这时可以通过vm访问到data中的数据、methods中配置的方法。

Vue:此阶段Vue开始解析模板,生成虚拟DOM(内存中),页面还不能显示解析好的内容。

beforeMount:这时页面呈现的是未经Vue编译的DOM结构,所有对DOM的操作最终都不奏效。

Create vm.$el and replace “el” with it:将内存中的虚拟DOM转为真实DOM插入页面。

mounted:页面中呈现的是经过Vue编译的DOM,对DOM操作有效(尽可能避免)。至此初始化过程结束,一般在此进行:开启定时器,发送网络请求,订阅消息,绑定自定义事件等初始化操作。

更新阶段

beforeUpdate:数据发生了更新,此时数据是新的,但是页面是旧的,即:页面尚未和数据保持同步。

Virtual DOM re-render and patch:根据新数据,生成新的虚拟 DOM,随后与旧的虚拟 DOM 进行比较,最终完成页面更新,即:完成了 Model->View 的更新。

updated:此时数据是新的,页面也是新的,即:页面和数据保持同步。

销毁流程

beforeDestroy:vm中所有的:data、methods、指令等等,都处于可用状态,马上要执行销毁过程,一般在此阶段:关闭定时器、取消订阅消息、解绑自定义事件等收尾操作。

Teardow watchers,child components and event listeners:拆除监视者,孩子组件和事件监听者。

destroyed:销毁完成。

重要的钩子

  1. mounted()

    常在此钩子中进行发送 ajax 请求,启动定时器,绑定自定义事件,订阅消息等操作。

  2. beforeDestroy()

​ 常在此钩子中进行清除定时器,解绑自定义事件,取消订阅消息等操作。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值