美文网首页
Vue生命周期

Vue生命周期

作者: hhaann | 来源:发表于2019-12-21 02:40 被阅读0次

在 Vue 实例中,需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM,便需要使用到生命周期钩子函数。从创建到销毁的过程,就是生命周期。它的生命周期中有多个事件钩子,可以让在控制整个Vue实例的过程时更容易形成好的逻辑。

列举钩子函数

beforeCreate

created

beforeMount

mounted

beforeUpdate

updated

beforeDestroy

destroyed

errorCaptured

deactivated

activated

共有11个生命周期。

周期分析

逐个分析前,先看执行顺序

<input type="text" v-model="input" placeholder="请输入你想输入的内容">
<p id="box">{{input}}</p>
 data () {
    return {
      input: '',
      number: 123
    }
  },
  //box为DOM元素,this.number为data中的数据
  beforeCreate () {
    var box = document.getElementById('box')
    console.log('beforeCreate---', box, this.number) 
  },
  created () {
    var box = document.getElementById('box')
    console.log('created---', box, this.number)
  },
  beforeMount () {
    var box = document.getElementById('box')
    console.log('beforeMount---', box, this.number)
  },
  mounted () {
    var box = document.getElementById('box')
    console.log('mounted---', box, this.number)
  },
  beforeUpdate () {
    var box = document.getElementById('box')
    console.log('beforeUpdate---', box, this.number)
  },
  updated () {
    var box = document.getElementById('box')
    console.log('updated---', box, this.number)
  }

看其执行打印结果

当触发 input 框输入内容时,继续执行。最终执行结果图如下

由此可知执行顺序为:beforeCreate --> created --> beforeMount --> mounted --> beforeUpdate(页面数据变动触发)--> updated
这是如上七个所列举的钩子函数的执行顺序。继续往下走

<router-link to="/">跳转</router-link>
beforeDestroy () {
  console.log('beforeDestroy')
},
destroyed () {
  console.log('destroyed')
}

当一加载本页是不会调用 beforeDestroy,destroyed 函数的。当点击跳转后,便会触发两个函数。

errorCapture
当捕获一个来自子孙组件的错误时被调用

最后看官网给出的图.

lifecycle.png

逐个分析
基于执行顺序中所发的图进行分析。

beforeCreate(创建前):组件刚创建,DOM元素与data中的元素还未初始化,故拿不到dom与data中的数据。

created(创建后):完成数据观测,可以在此周期中获取数据,并对数据进行渲染。但DOM元素还未加载出来。

beforeMount(载入前):数据初始化也已经完成,数据的双向绑定还是显示{{}},DOM还未加载完成。但已编译模板,把data里面的数据和模板生成html。

mounted(载入后):data数据与DOM元素都已加载完成,将上个周期编译好的内容渲染到页面。

beforeUpdate(更新前):只要是页面数据改变了都会触发。数据更新之前,页面数据还是原来的数据;如果没有数据改变不执行。

updated(更新后):只要是页面数据改变了都会触发,数据更新完毕,页面的数据是更新完成的。

beforeDestroy(摧毁前):在路由离开的时候执行。

destroyed(摧毁后):在实例销毁之后调用。

errorCaptured:当捕获一个来自子孙组件的错误时被调用。

activated & deactivated:在keep-alive被包裹的组件的情况下,假设a、b两个页面,当a页面切换到b页面,则触发deactivated;回到a页面,则触发activated周期

相关文章

  • vue生命周期

    一 vue生命周期 Vue的生命周期:就是vue实例从创建到销毁的全过程 二 vue生命周期钩子 vue生命周期...

  • vue生命周期

    vue生命周期详: vue生命周期详解图: vue生命周期详解代码展示:

  • Vue生命周期

    Vue生命周期详解 一、Vue生命周期 与 作用 (生命周期钩子就是生命周期函数) (1)Vue生命周期:每个Vu...

  • vue3较vue2的特别之处 - 生命周期

    vue2 生命周期 vue3 生命周期 将 Vue2 的生命周期钩子代码更新到 Vue3 参考地址:https:/...

  • 前端之路-VUE面试题

    vue生命周期面试题vue 生命周期是什么? Vue 实例从创建到销毁的过程,就是生命周期 beforeCreat...

  • Vue.js入门(二):生命周期

    1 生命周期 Vue生命周期是Vue实例从创建到销毁的过程,就是生命周期。在Vue实例的生命周期过程中会运行生命周...

  • vue生命周期

    vue里的生命周期是什么? vue实例从创建到销毁的过程称之为vue的生命周期 vue的生命周期各阶段都做了什么?...

  • Vue 生命周期

    vue里的生命周期是什么? vue实例从创建到销毁的过程称之为vue的生命周期 vue的生命周期各阶段都做了什么?...

  • vue学习记录

    vue全家桶 vue生命周期 生命周期的理解 新建项目 ①:cnpm install vue-cli -g (全...

  • Vue生命周期

    Vue生命周期 1、什么是vue生命周期? 答: Vue 实例从创建到销毁的过程,就是生命周期。也就是从开始创建、...

网友评论

      本文标题:Vue生命周期

      本文链接:https://www.haomeiwen.com/subject/yjzinctx.html