Vue生命周期详解

1.什么是生命周期

生命周期: Vue实例被创建出来到被销毁的整个过程称为生命周期(也被称为生命周期钩子)。

在Vue官网中有一张关于生命周期的图
在这里插入图片描述

类似于人的一生,在人的一生中有很多重要的时刻,Vue实例的整个生命周期中也有重要时刻,接下来我们谈下Vue的一生

2.Vue生命周期

2.1.主要的生命周期函数分类

挂载过程
  • beforeCreate():将要创建Vue实例,但Vue实例中的data属性和methods属性没有初始化好(类似人将要出生)
  • create():创建完毕Vue实例,其中的data属性和methods属性均被初始化好,但还没有挂载到页面中
  • beforeMount():将要挂载Vue实例,此时还没来得及往页面上放置,页面呈现的是未经Vue编译的DOM结构,在此阶段对DOM的操作,最终都不会奏效
  • mounted():挂载完毕,此时页面呈现的是经过Vue编译的DOM结构,对DOM的操作均有效,一般在此开启定时器、发送网络请求等初始化操作(类似人呱呱坠地)
更新过程
  • beforeUpdate():将要更新,此时data中的值是新的,页面上显示的数据是旧的,页面和数据没有保持一致,因为还没有重新渲染页面
  • updated():更新完毕,此时data中的值是新的,页面上显示的数据也是新的,页面和数据保持一致,页面已经被重新渲染
销毁流程
  • beforeDestroy():将要销毁,此时Vue实例中的data、methods、指令等等,仍处于可用状态,一般在这个阶段关闭定时器、解绑自定义事件等收尾操作(类似人驾鹤西游前留下的遗言)
  • destroyed():销毁完毕,移除所有的监视、所有的子组件、事件监听器。

2.2.对比人和Vue的“一生”

人的一生

将要出生
呱呱坠地 ===> 对应Vue生命钩子mouted
学会说话
学会走路

将要永别 ===> 对应Vue生命钩子beforeDestroy
已经永别

Vue的一生

将要创建 ===> 调用beforeCreate函数
创建完毕 ===> 调用created函数
将要挂载 ===> 调用beforeMount函数
挂载完毕 ===> 调用mouted函数【重要的钩子】
将要更新 ===> 调用beforeUpdate函数
更新完毕 ===> 调用updated函数
将要销毁 ===> 调用beforeDestroy函数【重要的钩子】
销毁完毕 ===> 调用destroyed函数

<template>
    <div id="root">
		<h1>{{n}}</h1>
		<button @click="add">点我使n值加一</button>
      	<button @click="stop">点我销毁Vue</button>
    </div>
</template>
<script>
    new Vue({
      el: "#root",
      data: {
        n: 1,
      },
      methods: {
        add() {
          this.n++;
        },
        stop(){
          this.$destroy();
        }
      },
      //需要注意的是,Vue中生命周期钩子不是写在methods属性中,是跟methods属性平级的
      beforeCreate() {
        console.log("beforeCreate")
        // console.log(this)//vm
      },
      created() {
        console.log("created")
      },
      beforeMount() {
        console.log("beforeMount")
      },
      mounted() {
        console.log("mounted");
      },
      beforeUpdate() {
        console.log("beforeUpdate");
      },
      updated() {
        console.log("updated");
      },
      beforeDestroy() {
        console.log("beforeDestroy");
      },
      destroyed() {
        console.log("destroyed");
      },
    });
  </script>
以上代码在控制台的输出为
beforeCreate
created
beforeMount
mounted
beforeUpdate
updated
beforeDestroy
destroyed
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue.js 是一个流行的 JavaScript 框架,它有一套完整的生命周期钩子函数,用于在组件的不同阶段执行特定的操作。下面是 Vue 组件的生命周期钩子函数及其对应的阶段: 1. beforeCreate: 在实例被创建之前调用,此时 data 和 methods 等属性还未初始化。 2. created: 在实例创建完成后调用,此时可以访问 data 和 methods,并可以进行一些初始化操作。 3. beforeMount: 在编译模板之前调用,此时模板还未被渲染成真实的 DOM。 4. mounted: 在编译模板之后调用,此时模板已经被渲染成真实的 DOM,并且可以进行 DOM 操作。 5. beforeUpdate: 在数据更新之前调用,此时可以进行一些更新准备工作。 6. updated: 在数据更新之后调用,此时 DOM 已经被更新。 7. beforeDestroy: 在实例销毁之前调用,此时实例仍然可用。 8. destroyed: 在实例销毁之后调用,此时实例及其所有的监听器都已被移除。 下面是一个简单的示例代码,演示了 Vue 组件的生命周期函数的使用: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Vue Lifecycle Demo</title> </head> <body> <div id="app"> {{ message }} </div> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script> new Vue({ el: '#app', data: { message: 'Hello, Vue!' }, beforeCreate() { console.log('beforeCreate hook') }, created() { console.log('created hook') }, beforeMount() { console.log('beforeMount hook') }, mounted() { console.log('mounted hook') }, beforeUpdate() { console.log('beforeUpdate hook') }, updated() { console.log('updated hook') }, beforeDestroy() { console.log('beforeDestroy hook') }, destroyed() { console.log('destroyed hook') } }) </script> </body> </html> ``` 你可以在浏览器中打开该示例,然后在控制台中查看不同生命周期阶段的输出信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值