Vue的生命周期及其钩子函数

本文详细解析了Vue.js的生命周期,包括实例创建、页面渲染、数据更新和组件销毁四个阶段的钩子函数,通过代码示例展示了各阶段的具体作用。

生命周期是指Vue实例或者组件从诞生到消亡经历的每一个阶段,在这些阶段的前后可以设置一些函数当做事件来调用。

分为四个阶段

1.实例创建前后

beforeCreate=> 鸡肋函数, 很少用。
created => 加载数据 。此时this,拥有了该有的东西。 this.$refs获取不到DOM

2.页面渲染前后

beforeMount => 渲染前执行 this.$refs获取不到DOM
mounted => 渲染完成 =>可以获取dom对象。 this.$refs可以获取到DOM

3.数据更新前后
beforeUpdate => 鸡肋函数
updated => 鸡肋函数 。当很多数据更新时,使用此函数会浪费资源。可以用 watch 检测 data中某个数据的变化。

4.组件销毁前后
beforeDestoty => 可以用来销毁之前定义的定时器
destoryed => 鸡肋函数

下面写一段代码来演示一下

<template>
  <div>
    生命周期及其钩子函数
    <p>{{name}}</p>
    <input type="text" v-model="name" />
    <p>{{age}}</p>
    <input type="text" v-model="age" />
  </div>
</template>

<script>
export default {
  data() {
    return {
      name: "小明",
      age: 12
    };
  },
  beforeCreate() {
    console.log("实例创建前执行beforeCreate");
  },
  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>

<style>
</style>
Vue生命周期是指Vue实例从创建到销毁的整个过程,而钩子函数则是在不同的生命周期阶段执行的函数Vue提供了一系列的钩子函数,用于在特定的生命周期阶段执行相应的操作。 以下是Vue生命周期钩子函数及其对应的生命周期阶段: 1. beforeCreate:在实例初始化之后,数据观测和事件配置之前被调用。 2. created:在实例创建完成后被立即调用。此时实例已完成以下配置:数据观测、属性和方法的运算、watch/event事件回调。然而,挂载阶段还没开始,$el属性目前不可见。 3. beforeMount:在挂载开始之前被调用。相关的render函数首次被调用。 4. mounted:el被新创建的vm.$el替换,并挂载到实例上去之后调用该钩子函数。此时,实例已完成以下配置:编译模板、把data面的数据和模板生成html。注意此时还没有挂载到页面上。 5. beforeUpdate:数据更新时调用,发生在虚拟DOM重新渲染和打补丁之前。可以在该钩子函数中对更新之前的状态做一些操作。 6. updated:由于数据更改导致的虚拟DOM重新渲染和打补丁,在这之后会调用该钩子函数。可以执行依赖于DOM的操作,但是要避免更改数据。 7. beforeDestroy:实例销毁之前调用。在这一步,实例仍然完全可用。 8. destroyed:实例销毁后调用。此时,所有的事件监听器被移除,所有的子实例也被销毁。 下面是一个简单的示例,演示了Vue生命周期钩子函数的使用: ```javascript new Vue({ el: '#app', data: { message: 'Hello Vue!' }, beforeCreate: function() { console.log('beforeCreate'); }, created: function() { console.log('created'); }, beforeMount: function() { console.log('beforeMount'); }, mounted: function() { console.log('mounted'); }, beforeUpdate: function() { console.log('beforeUpdate'); }, updated: function() { conso.log('updated'); }, beforeDestroy: function() { console.log('beforeDestroy'); }, destroyed: function() { console.log('destroyed'); } }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值