Vue3钩子函数用法介绍

Vue3钩子函数用法介绍

Vue3钩子函数用法介绍

一、前言

Vue是一款流行的前端框架,它提供了丰富的生命周期钩子函数用于管理组件的生命周期。钩子函数是在特定的生命周期阶段被调用的函数,通过钩子函数,我们可以在组件的不同阶段执行一些操作。

随着Vue的发展,Vue3作为Vue的最新版本,也带来了新的钩子函数。本文将详细介绍Vue3中的钩子函数用法,帮助读者更好地理解和应用Vue3中的生命周期。

二、Vue3中的钩子函数

Vue3中的钩子函数可以分成三类:

  1. 创建阶段钩子函数:beforeCreate、created、beforeMount、mounted。
  2. 更新阶段钩子函数:beforeUpdate、updated。
  3. 销毁阶段钩子函数:beforeUnmount、unmounted。

下面将分别详细介绍这些钩子函数的用法。

2.1 创建阶段钩子函数

2.1.1 beforeCreate

在组件实例被创建时,即组件的数据对象初始化之后,但是组件实例被创建之前调用。此时,组件的数据对象、计算属性、方法等还未初始化。

const App = {
  beforeCreate() {
    console.log('beforeCreate');
  },
};

Vue.createApp(App).mount('#app');

代码执行结果:

beforeCreate

2.1.2 created

在组件实例被创建后调用。此时,组件的数据对象已经初始化完成,可以访问组件的数据、计算属性、方法等。

const App = {
  data() {
    return {
      message: 'Hello Vue!',
    };
  },
  created() {
    console.log('created', this.message);
  },
};

Vue.createApp(App).mount('#app');

代码执行结果:

created Hello Vue!

2.1.3 beforeMount

在组件挂载之前调用。此时,组件的模板已经编译完成,但是还未渲染成真实的DOM。

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

Vue.createApp(App).mount('#app');

代码执行结果:

beforeMount

2.1.4 mounted

在组件挂载到真实的DOM之后调用。此时,组件已经完成了初始化,可以获取真实的DOM元素。

const App = {
  template: '<div>{{ message }}</div>',
  mounted() {
    console.log('mounted', this.$el.textContent);
  },
  data() {
    return {
      message: 'Hello Vue!',
    };
  },
};

Vue.createApp(App).mount('#app');

代码执行结果:

mounted Hello Vue!

2.2 更新阶段钩子函数

2.2.1 beforeUpdate

在组件更新之前调用。此时,组件的数据已经被更改,但是DOM还未更新。

const App = {
  template: '<div>{{ message }}</div>',
  beforeUpdate() {
    console.log('beforeUpdate', this.message);
  },
  data() {
    return {
      message: 'Hello Vue!',
    };
  },
  mounted() {
    setTimeout(() => {
      this.message = 'Hello Updated Vue!';
    }, 1000);
  },
};

Vue.createApp(App).mount('#app');

代码执行结果:

beforeUpdate Hello Vue!

2.2.2 updated

在组件更新之后调用。此时,组件的数据已经更新,并且DOM也已经更新完成。

const App = {
  template: '<div>{{ message }}</div>',
  updated() {
    console.log('updated', this.message);
  },
  data() {
    return {
      message: 'Hello Vue!',
    };
  },
  mounted() {
    setTimeout(() => {
      this.message = 'Hello Updated Vue!';
    }, 1000);
  },
};

Vue.createApp(App).mount('#app');

代码执行结果:

updated Hello Updated Vue!

2.3 销毁阶段钩子函数

2.3.1 beforeUnmount

在组件被卸载之前调用。可以在该钩子函数中执行一些清理操作,如清除定时器、取消订阅等。

const App = {
  template: '<div>{{ message }}</div>',
  beforeUnmount() {
    console.log('beforeUnmount');
  },
  data() {
    return {
      message: 'Hello Vue!',
    };
  },
  mounted() {
    setTimeout(() => {
      this.$destroy();
    }, 1000);
  },
};

Vue.createApp(App).mount('#app');

代码执行结果:

beforeUnmount

2.3.2 unmounted

在组件被卸载之后调用。此时,组件已经被销毁,无法再访问组件的数据、方法等。

const App = {
  template: '<div>{{ message }}</div>',
  unmounted() {
    console.log('unmounted');
  },
  data() {
    return {
      message: 'Hello Vue!',
    };
  },
  mounted() {
    setTimeout(() => {
      this.$destroy();
    }, 1000);
  },
};

Vue.createApp(App).mount('#app');

代码执行结果:

unmounted

三、总结

Vue3中的钩子函数用于管理组件的生命周期,在不同的生命周期阶段执行一些操作。本文介绍了Vue3中的创建阶段钩子函数、更新阶段钩子函数和销毁阶段钩子函数的用法。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程