Vue生命周期实例分析总结

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使用lodop实现打印小结

    下面是对“Vue使用lodop实现打印小结”的详细攻略及示例说明。 什么是lodop? lodop是一款国内的Web打印控件,具备传统桌面打印的稳定性和易用性,支持多种打印方式,包括预览打印、直接打印、浏览器弹出打印等,在Web应用中实现打印功能常常使用lodop。 使用lodop实现打印的步骤 第一步:引入lodop 在Vue项目中使用lodop,需要在i…

    Vue 2023年5月27日
    00
  • 简单理解Vue条件渲染

    简单理解Vue条件渲染 Vue条件渲染是指根据指令或者表达式的值,控制元素的显示或隐藏。常见的条件渲染指令包括 v-if、v-else、v-else-if和v-show。 v-if 指令 使用 v-if 指令可以根据表达式的值来决定元素是否显示。如果表达式的值为 true,则元素会显示;反之则不显示。例如: <template> <div&…

    Vue 2023年5月27日
    00
  • vue日期选择框之时间范围的使用介绍

    Vue 日期选择框之时间范围的使用介绍 在 Vue 中,使用日期选择框可以方便用户选择时间。在某些场景下,我们需要选择起始时间和截止时间之间的时间段。本文将介绍如何在 Vue 中使用日期时间范围选择框。 引入组件 Vue.Datepicker 组件是一个支持时间范围选择的日期选择框组件。我们可以通过代码库或者 CDN 引入该组件。 <!– 通过 CD…

    Vue 2023年5月28日
    00
  • 如何利用vue展示.docx文件、excel文件和csv文件内容

    展示Word文档的步骤 在Vue项目中,我们可以使用js的库jszip和docxtemplater来解析Word文档中的数据。 安装依赖库 在终端输入以下命令安装依赖库: npm install jszip docxtemplater –save 解析Word文档 将Word文档解析成json格式的数据: import JSZip from ‘jszip’…

    Vue 2023年5月28日
    00
  • Vue内部渲染视图的方法

    下面是关于 Vue 内部渲染视图的方法的详细攻略。 什么是 Vue 内部渲染视图的方法 在 Vue 中,当数据发生变化时,会根据使用的渲染方法重新渲染视图,从而使视图与数据状态保持同步。Vue 内部提供了多种渲染视图的方法,包括基于模板的渲染、基于 JSX 的渲染、手动刷新等。 Vue 模板渲染 Vue 的模板渲染是利用 HTML 模板代码和 Vue 组件选…

    Vue 2023年5月27日
    00
  • vue中同时监听多个参数的实现

    当我们需要监听多个参数时,可以使用$watch或computed来实现。 使用$watch监听多个参数的实现 我们可以使用$watch来监听多个参数的变化,具体实现可以参考以下步骤: 在Vue实例的data中定义需要监听的参数。 data() { return { param1: ”, param2: ”, param3: ” } } 在Vue实例中定…

    Vue 2023年5月28日
    00
  • vue3安装配置sass的详细步骤

    请按照以下步骤来安装配置Sass: 安装Vue CLI Vue CLI是一个官方提供的基于webpack的脚手架。在项目中使用它可以帮助我们自动化构建、配置开发环境和打包等等。下面是安装Vue CLI的命令: npm install -g @vue/cli 创建Vue 3工程 执行以下命令以创建一个新的 Vue 工程: vue create my-proje…

    Vue 2023年5月28日
    00
  • 一文搞懂Vue3中watchEffect侦听器的使用

    下面是详细讲解: 一文搞懂Vue3中watchEffect侦听器的使用 简介 在Vue3中,watchEffect是一个侦听器函数,它接收一个响应式数据对象,并在该对象发生变化时执行指定的callback函数。相比于Vue2的watch,它是基于响应式数据的,不需要指定要侦听的属性名,当数据变化时立刻执行回调。watchEffect的使用可以让你更加灵活地监…

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