Vue生命周期实例分析总结

yizhihongxing

Vue生命周期实例分析总结

生命周期钩子函数

Vue实例有一个完整的生命周期,从开始创建、初始化数据、编译模板、挂载DOM、渲染、更新、销毁等一系列过程,我们称这是Vue的生命周期,通常也称为生命周期钩子函数。生命周期钩子函数包含如下几个阶段:

  1. beforeCreate:实例刚在内存中被创建出来,此时,还没有初始化好 data 和 methods 属性。

  2. created:实例已经在内存中创建完成,此时 data 和 methods 已经创建完成,此时还没有开始编译模板。

  3. beforeMount:此时,模板已经在内存中编译完成,但还没有挂载到页面中。

  4. mounted:此时,模板已经挂载到了页面中,喜提$el 属性

  5. beforeUpdate:组件内部数据有变化,Vue 将要立即重新渲染虚拟 DOM 并应用更新。此时还没有开始重新渲染。

  6. updated:Vue 已经重新渲染并更新了虚拟 DOM 中的元素。此时组件更新完成。

  7. beforeDestroy:Vue实例销毁之前回调该方法,通常在这个钩子函数里面可以进行一些收尾工作,比如清除定时器。

  8. destroyed:Vue实例销毁之后调用该方法,销毁完毕的Vue实例。

实例分析

下面我们来运用钩子函数的知识来进行实例分析:

实例1

<template>
  <div>
    <h2>{{ message }}</h2>
  </div>
</template>

<script>
export default {
  data () {
    return {
      message: "Hello Vue!"
    }
  },
  beforeCreate () {
    console.log('在 Vue 实例初始化之后,数据观测 (data observer) 和 event/watcher 事件配置之前被调用。')
  },
  created () {
    console.log('在实例创建完成后被立即调用。在这一步,实例已经完成以下的配置:数据观测(data observer),属性和方法的运算,watch/event 事件回调。然而,挂载阶段还没开始,$el 属性目前还不存在')
  },
  beforeMount () {
    console.log('在挂载开始之前被调用:相关的 render 函数首次被调用。')
  },
  mounted () {
    console.log('在挂载完成后被调用,即dom挂载完成后调用该函数。此时,组件已经显示在页面中.')
  },
  beforeUpdate () {
    console.log('在数据更新之前被调用,发生在虚拟 DOM 重新渲染和打补丁之前。')
  },
  updated () {
    console.log('在由于数据更改导致的虚拟 DOM 重新渲染和打补丁之后立即调用。')
  },
  beforeDestroy() {
    console.log('在实例销毁之前调用。这一步,实例仍然完全可用。')
  },
  destroyed () {
    console.log('在实例销毁之后调用。')
  }
}
</script>

当我们运行以上代码,控制台输出的内容如下:

在 Vue 实例初始化之后,数据观测 (data observer) 和 event/watcher 事件配置之前被调用。
在实例创建完成后被立即调用。在这一步,实例已经完成以下的配置:数据观测(data observer),属性和方法的运算,watch/event 事件回调。然而,挂载阶段还没开始,$el 属性目前还不存在
在挂载开始之前被调用:相关的 render 函数首次被调用。
在挂载完成后被调用,即dom挂载完成后调用该函数。此时,组件已经显示在页面中.

可见,控制台首先输出了 beforeCreate 的内容,说明在实例创建的初始化阶段,beforeCreate函数被调用。接着输出了 created 的内容,说明在实例创建完成之后,实例完成了对数据、属性、方法的配置等工作。接着输出了 beforeMount 的内容,说明挂载前相关的render函数被调用。最后输出 mounted 的内容,说明实例挂载完成,组件已经显示在页面中。

实例2

下面,我们再举一个例子。

<template>
  <div>
    <h2>{{ message }}</h2>
  </div>
</template>

<script>
export default {
  data () {
    return {
      message: "Hello Vue!"
    }
  },
  beforeCreate () {
    console.log('在 Vue 实例初始化之后,数据观测 (data observer) 和 event/watcher 事件配置之前被调用。')
  },
  created () {
    console.log('在实例创建完成后被立即调用。在这一步,实例已经完成以下的配置:数据观测(data observer),属性和方法的运算,watch/event 事件回调。然而,挂载阶段还没开始,$el 属性目前还不存在')
  },
  beforeMount () {
    console.log('在挂载开始之前被调用:相关的 render 函数首次被调用。')
  },
  mounted () {
    console.log('在挂载完成后被调用,即dom挂载完成后调用该函数。此时,组件已经显示在页面中.')
  },
  beforeUpdate () {
    console.log('在数据更新之前被调用,发生在虚拟 DOM 重新渲染和打补丁之前。')
  },
  updated () {
    console.log('在由于数据更改导致的虚拟 DOM 重新渲染和打补丁之后立即调用。')
  },
  beforeDestroy() {
    console.log('在实例销毁之前调用。这一步,实例仍然完全可用。')
  },
  destroyed () {
    console.log('在实例销毁之后调用。')
  }
}
</script>

当我们运行以上代码,控制台输出的内容如下:

在 Vue 实例初始化之后,数据观测 (data observer) 和 event/watcher 事件配置之前被调用。
在实例创建完成后被立即调用。在这一步,实例已经完成以下的配置:数据观测(data observer),属性和方法的运算,watch/event 事件回调。然而,挂载阶段还没开始,$el 属性目前还不存在
在挂载开始之前被调用:相关的 render 函数首次被调用。
在挂载完成后被调用,即dom挂载完成后调用该函数。此时,组件已经显示在页面中.
在数据更新之前被调用,发生在虚拟 DOM 重新渲染和打补丁之前。
在由于数据更改导致的虚拟 DOM 重新渲染和打补丁之后立即调用。
在实例销毁之前调用。这一步,实例仍然完全可用。
在实例销毁之后调用。

这个例子和第一个例子做了相同的事情,不过多了几个生命周期。

输出了 beforeUpdate 的内容,说明在数据更新之前调用了beforeUpdate函数。最后输出 destroyed的内容,说明实例被销毁了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue生命周期实例分析总结 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • 如何理解Vue前后端数据交互与显示

    如何理解Vue前后端数据交互与显示 前言 前端框架Vue.js已经成为了现代Web开发中的重要工具之一。Vue.js的主要目标是提供简单易用的API,实现快速构建应用程序。其中最重要的一项功能就是数据交互,即前后端的数据交互。在使用Vue.js构建前端应用程序时,我们需要与后端进行数据交互,同时也需要在前端将这些数据进行显示。在本文中,我们将重点探讨Vue.…

    Vue 2023年5月29日
    00
  • 浅谈Vue.js路由管理器 Vue Router

    下面我来为大家详细讲解一下“浅谈Vue.js路由管理器 Vue Router”的完整攻略。 1. 什么是Vue Router Vue Router 是 Vue.js 官方的路由管理器,它和 Vue.js 的核心深度集成,可以让我们轻松地实现单页面应用程序 (SPA) 的路由功能。Vue Router 基于Vue.js强大的组件化和数据响应能力,可以非常方便地…

    Vue 2023年5月27日
    00
  • Vue项目API接口封装的超详细解答

    下面是关于“Vue项目API接口封装的超详细解答”的完整攻略。 什么是API接口封装 API接口封装是将前端应用与后端应用分离的一种实现方式,通过提供API接口,前端和后端可以独立开发和维护各自的应用。前端通过向后端发送请求,获取数据并返回前端页面进行渲染。 API接口封装的好处包括:- 前后端分离,提高开发效率;- 保障数据的安全性,不会暴露后端实现细节;…

    Vue 2023年5月28日
    00
  • vue自定义指令directive的使用方法

    下面是关于Vue自定义指令的使用方法的完整攻略。 什么是Vue自定义指令? Vue.js提供的自定义指令可以让开发者注册全局或局部的指令,用于根据应用需求自定义HTML元素的行为。Vue自定义指令提供了一种机制,使开发者可以向DOM元素添加特殊行为,例如输入格式,延迟加载,自动聚焦等等。 自定义指令的使用方法 全局注册指令 可以通过Vue.directive…

    Vue 2023年5月27日
    00
  • 详解vue生命周期

    当我们开发 Vue.js 应用时,Vue 实例会经历一系列的过程,这些过程被称为“生命周期”。Vue 提供了一些钩子函数,让我们在生命周期不同时刻执行代码以达到相应的目的。下面将详解 Vue 生命周期的完整攻略。 生命周期概述 Vue 生命周期分为八个阶段,每个阶段对应一个钩子函数,以下是八个阶段的钩子函数: beforeCreate:在实例初始化之后,数据…

    Vue 2023年5月28日
    00
  • 简单了解vue.js数组的常用操作

    下面是“简单了解vue.js数组的常用操作”的完整攻略: 常用数组操作 数组是Vue.js中很重要的数据类型,Vue.js提供了很多常用的数组操作方法: push push方法可以向数组的末尾添加一个或多个元素。它的语法如下: arr.push(element1, …, elementN) 其中,arr是要操作的数组,element1到elementN是…

    Vue 2023年5月27日
    00
  • Vue3和Vite不得不说的那些事

    下面是关于“Vue3和Vite不得不说的那些事”的完整攻略。 什么是Vue3和Vite Vue3是Vue.js在2020年9月正式发布的一次重大版本更新,Vue3相较于Vue2来说,带来许多令人激动的新特性,包括Composition API、性能优化等。其中,Composition API是最大的亮点之一,它能够让开发者更好地组织和重用组件逻辑。 Vite…

    Vue 2023年5月28日
    00
  • 关于vue-i18n在单文件js中的使用

    下面是关于vue-i18n在单文件js中的使用的完整攻略: 1. 安装vue-i18n 首先,我们需要安装vue-i18n,可以使用npm或yarn来安装,以下是命令: # 使用npm安装 npm install vue-i18n –save # 使用yarn安装 yarn add vue-i18n 2. 配置vue-i18n 在Vue项目中,我们可以通过…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部