美文网首页从零开始构建一个Vue项目
Vue五、Vue生命周期的理解以及各个阶段的应用

Vue五、Vue生命周期的理解以及各个阶段的应用

作者: 好一只帅卤蛋 | 来源:发表于2020-02-23 22:38 被阅读0次

我刚开始学框架的时候听到最多的应该就是生命周期这几个字眼了。
对于生命周期我的理解是:就是一个vue实例从开始创建到数据渲染等操作完成到最后销毁的过程。
简单来说就是你写的组件从打开的那一刻起到消失的那一刻止,中间经历的所有过程。

vue的生命周期

一、各个阶段

1 - beforeCreate - 初始化之前

 实例刚刚被创建出来,此时, `data` 和 `methods`属性还没有初始化

2 - Created - 创建完成(只触发一次)

在实例创建完成后被立即调用。
在这一步,实例已完成以下的配置:数据观测 (data observer),  `data` 和 `methods`属性运算,watch/event 事件回调。
然而,挂载阶段还没开始,`$el `属性目前尚不可用,还没有开始编译。

3 - beforeMount - 挂载之前

  此时已经完成了模板的编译,但是还没有开始挂载,相关的`render` 函数首次被调用。

4 - mounted - 实例被挂载后调用

  此时,已经将编译好的模板,挂载到了页面指定的容器中显示

5 - beforeUpdate - 数据更新前

  状态更新之前执行此函数, 此时 data 中的状态值是最新的,但是界面上显示的 数据还是旧的,因为此时还没有开始重新渲染DOM节点.
  这里适合在更新之前访问现有的 DOM,比如`手动移除已添加的事件监听器`。

6 - Updated - 被更新之后

  实例更新完毕之后调用此函数,此时 data 中的状态值 和 界面上显示的数据,都已经完成了更新,界面已经被重新渲染好了!
  然而在大多数情况下,你应该避免在此期间更改状态。如果要相应状态改变,通常最好使用`computed 或 watcher`取而代之。

7 - activated / deactivated - 被 keep-alive 缓存的组件(激活时/停用时)调用。

  <keep-alive> 包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。
  <keep-alive> 是一个抽象组件:它自身不会渲染一个 DOM 元素,也不会出现在组件的父组件链中。
  当组件在 <keep-alive> 内被切换,它的 activated 和 deactivated 这两个生命周期钩子函数将会被对应执行。
  主要用于`保留组件状态或避免重新渲染`。

8 - beforeDestroy - 销毁之前

  实例销毁之前调用。在这一步,实例仍然完全可用。

9 - destroyed - 销毁之后

  实例销毁后调用。调用后,Vue 实例`指示的所有东西都会解绑定`,所有的`事件监听器会被移除`,所有的`子实例也会被销毁`。 

二、实例(在后缀名为.vue的文件中)

下面的内容都是常用的

<template>
  <div class="home">
    <img alt="Vue logo" src="../assets/logo.png" />
    <HelloWorld msg="Welcome to Your Vue.js App" />
  </div>
</template>

<script>
// @ is an alias to /src
import HelloWorld from "@/components/HelloWorld.vue";

export default {
  name: "Home",
  data() {
    return {};
  },
  components: {
    HelloWorld
  },
  methods: {
  },

  // 创建实例期间的四个事件
  beforeCreate() {
    // 这里 data 和 methods 中的 数据都还没有没初始化
  },
  created() {
    //  在 created 中,data 和 methods 都已经被初始化好了!
    //  如果要调用 methods 中的方法,或者操作 data 中的数据,最早,只能在 created 中操作
  },
  beforeMount() {
    // 在 beforeMount 执行的时候,页面中的元素,还没有被真正替换过来,只是之前写的一些模板字符串
  },
  mounted() {
    // 注意: mounted 是 实例创建期间的最后一个生命周期函数,当执行完 mounted 就表示,实例已经被完全创建好了,此时,如果没有其它操作的话,这个实例,就静静的 躺在我们的内存中,一动不动
  },

  // 接下来的是运行中的两个事件
  beforeUpdate() {
    //  执行 beforeUpdate 的时候,页面中的显示的数据,还是旧的,但是 data 数据是最新的,页面里面和最新的数据还没保持同步
  },
  updated() {
    // updated 事件执行的时候,页面和 data 数据就保持同步了,都是最新的
  }
};
</script>

三、思考

(1)、初始化是什么意思,销毁的具体表现在哪里?

(2)、vue底层是如何实现生命周期的,很奇妙的东西?

相关文章

  • Vue五、Vue生命周期的理解以及各个阶段的应用

    我刚开始学框架的时候听到最多的应该就是生命周期这几个字眼了。对于生命周期我的理解是:就是一个vue实例从开始创建到...

  • 【Vue3 从入门到实战 进阶式掌握完整知识体系】002-Vue

    二、Vue语法基础 1、Vue中的应用和组件的基本部分 代码 运行结果 2、理解Vue的生命周期函数* 生命周期图...

  • Vue学习笔记(12)-生命周期函数

    生命周期函数 生命周期函数代表的是Vue实例,或者是Vue组件,在网页中各个生命阶段所执行的函数。生命周期函数可以...

  • 2-10 vue生命周期

    vue生命周期 Vue实例的生命周期 就像一个人,从出生到死亡会经历童年、少年、青年、中年、老年各个阶段。如果你是...

  • vue学习记录

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

  • vue生命周期

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

  • Vue 生命周期

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

  • vue面试必会

    一、对于MVVM的理解? 二、 Vue的生命周期 1.什么是Vue生命周期? 2.vue生命周期的作用是什么? 3...

  • Day45/100 Vue的生命周期

    写在前面的话 Vue生命周期贯穿Vue的整体思想的理解~灰常重要 (一)Vue生命周期全景图 (二)新建Vue实例...

  • 自学Java第137天

    学了vue的生命周期钩子,以及指令这个钩子,如何理解它呢?初步就可以将其理解成回调函数 我目前对于vue的各种学习...

网友评论

    本文标题:Vue五、Vue生命周期的理解以及各个阶段的应用

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