Vue 2 和 Vue 3 生命周期钩子介绍及使用

94 阅读2分钟

Vue 的生命周期钩子允许你在不同阶段的组件生命周期执行代码。下面我们将分别介绍 Vue 2 和 Vue 3 中的生命周期钩子,并提供相应的使用示例。

Vue 2 生命周期钩子

1. beforeCreate

在实例初始化之后,数据观测 (data observer) 和 event/watcher 事件配置之前被调用。

new Vue({
  beforeCreate() {
    console.log('beforeCreate');
  }
});

2. created

在实例创建完成后被立即调用。

new Vue({
  data: {
    message: 'Hello Vue!'
  },
  created() {
    console.log('created', this.message);
  }
});

3. beforeMount

mount 方法执行之前被调用。

new Vue({
  template: '<div>{{ message }}</div>',
  data: {
    message: 'Hello Vue!'
  },
  beforeMount() {
    console.log('beforeMount');
  }
});

4. mounted

el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子。

new Vue({
  template: '<div>{{ message }}</div>',
  data: {
    message: 'Hello Vue!'
  },
  mounted() {
    console.log('mounted');
  }
});

5. beforeUpdate

数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁之前。

new Vue({
  template: '<div>{{ message }}</div>',
  data: {
    message: 'Hello Vue!'
  },
  beforeUpdate() {
    console.log('beforeUpdate');
  }
});

6. updated

由于数据更改导致的虚拟 DOM 重新渲染和打补丁之后调用。

new Vue({
  template: '<div>{{ message }}</div>',
  data: {
    message: 'Hello Vue!'
  },
  updated() {
    console.log('updated');
  }
});

7. beforeDestroy

实例销毁之前调用。

new Vue({
  beforeDestroy() {
    console.log('beforeDestroy');
  }
});

8. destroyed

Vue 实例销毁后调用。

new Vue({
  destroyed() {
    console.log('destroyed');
  }
});

Vue 3 生命周期钩子

在 Vue 3 中,生命周期钩子有所变化,特别是在使用 setup 函数时。以下是一些常用的生命周期钩子:

1. onBeforeMount

在挂载开始之前被调用。

import { onBeforeMount } from 'vue';

export default {
  setup() {
    onBeforeMount(() => {
      console.log('onBeforeMount');
    });
  }
};

2. onMounted

在挂载完成后被调用。

import { onMounted } from 'vue';

export default {
  setup() {
    onMounted(() => {
      console.log('onMounted');
    });
  }
};

3. onBeforeUpdate

在更新之前被调用。

import { onBeforeUpdate } from 'vue';

export default {
  setup() {
    onBeforeUpdate(() => {
      console.log('onBeforeUpdate');
    });
  }
};

4. onUpdated

在更新完成后被调用。

import { onUpdated } from 'vue';

export default {
  setup() {
    onUpdated(() => {
      console.log('onUpdated');
    });
  }
};

5. onBeforeUnmount

在卸载之前被调用。

import { onBeforeUnmount } from 'vue';

export default {
  setup() {
    onBeforeUnmount(() => {
      console.log('onBeforeUnmount');
    });
  }
};

6. onUnmounted

在卸载完成后被调用。

import { onUnmounted } from 'vue';

export default {
  setup() {
    onUnmounted(() => {
      console.log('onUnmounted');
    });
  }
};

希望这份文档能够帮助你更好地理解和使用 Vue 2 和 Vue 3 的生命周期钩子!