Vue3生命周期钩子函数详解

yizhihongxing

Vue3生命周期钩子函数详解

Vue3的生命周期函数是在组件渲染过程中执行的一系列函数,它们允许我们在组件的不同阶段执行自定义的代码逻辑。 Vue3中的生命周期函数与Vue2中的生命周期函数在名称和行为方面都有所改变。

生命周期钩子函数一览

总的来说,Vue3中有8个生命周期函数,这些生命周期函数按照它们执行的时间点被分为三类:

  • 创建期(creation):
  • setup()
  • 更新期(update):
  • onBeforeUpdate()
  • onUpdated()
  • onRenderTracked()
  • onRenderTriggered()
  • 卸载期(unmount):
  • onBeforeUnmount()
  • onUnmounted()
  • onDeactivated()(新添加)

生命周期钩子函数的执行顺序

Vue3中的生命周期函数的执行顺序如下:

  1. setup()
  2. 对组件中响应式数据的更改会触发以下三个生命周期钩子函数:
  3. onBeforeUpdate()
  4. 组件重新渲染
  5. onUpdated()
  6. 在组件卸载之前,组件中所有的effect都会执行一次
  7. onBeforeUnmount()
  8. 卸载组件中的所有effectwatch
  9. onUnmounted()

生命周期钩子函数的使用

setup()

setup()函数是Vue3中的新生命周期函数,它的目的是替代Vue2中的beforeCreatecreated生命周期函数,用来完成组件实例的创建和初始化。setup()函数在组件实例被创建之前被调用,它返回一个对象,对象中的属性和方法会被注入到组件实例中,我们也可以在setup()函数中创建和设置组件中的响应式数据。

<template>
  <div>
    <p>Count: {{ count }}</p>
    <button @click="increment">Increment</button>
  </div>
</template>

<script>
import { ref } from 'vue';

export default {
  setup() {
    const count = ref(0);

    const increment = () => {
      count.value++;
    };

    return {
      count,
      increment,
    };
  },
};
</script>

在上面的示例中,我们通过ref()创建了一个名为count的响应式数据属性和一个increment()方法,然后通过return语句将这两个属性/方法注入到组件中。

值得注意的是,setup()函数的返回值必须是一个普通对象或函数,不能是一个Promise或者没有返回值。

onBeforeUpdate()

onBeforeUpdate()生命周期函数在组件进行重新渲染之前被调用,此时我们可以访问到组件更新之前的状态,通过这个钩子函数我们可以检查、调整或取消当前的更新。

<template>
  <div>
    <p>Count: {{ count }}</p>
    <button @click="increment">Increment</button>
  </div>
</template>

<script>
import { ref } from 'vue';

export default {
  setup() {
    const count = ref(0);

    const increment = () => {
      count.value++;
    };

    return {
      count,
      increment,
      message: 'Message from before update',
    };
  },

  onBeforeUpdate() {
    console.log(this.message);
  },
};
</script>

在上面的示例中,我们在setup()函数中声明了一个名为message的数据属性,然后在onBeforeUpdate()函数中输出了message的值。当我们点击按钮触发组件重新渲染时,onBeforeUpdate()函数会在更新之前被调用,并且输出Message from before update

onUpdated()

onUpdated()生命周期函数在组件进行重新渲染之后被调用,此时我们可以访问到组件更新之后的状态,通过这个钩子函数我们可以执行一些与更新后子组件相关的操作。

<template>
  <div>
    <p>Count: {{ count }}</p>
    <button @click="increment">Increment</button>
  </div>
</template>

<script>
import { ref } from 'vue';

export default {
  setup() {
    const count = ref(0);

    const increment = () => {
      count.value++;
    };

    return {
      count,
      increment,
    };
  },

  onUpdated() {
    console.log(`Count updated to ${this.count}`);
  },
};
</script>

在上面的示例中,我们在onUpdated()函数中输出了count的值,当我们点击按钮触发组件重新渲染时,onUpdated()函数会在更新之后被调用,并且输出Count updated to后面跟着当前count的值。

示例

下面,我们来看一个更加具体的示例,该示例演示了onBeforeUnmount()onUnmounted()生命周期函数的用法。

<template>
  <div>
    <p>Count: {{ count }}</p>
    <button @click="increment">Increment</button>
  </div>
</template>

<script>
import { ref, onBeforeUnmount, onUnmounted } from 'vue';

export default {
  setup() {
    const count = ref(0);

    const increment = () => {
      count.value++;
    };

    // Effect用来演示:在组件卸载之前,组件中所有的`effect`都会执行一次
    const effect = () => console.log('effect');

    onBeforeUnmount(() => {
      console.log('Unregistering effect...');
      effect();
    });

    onUnmounted(() => {
      console.log('Component unmounted.');
    });

    return {
      count,
      increment,
      effect,
    };
  },
};
</script>

在上面的示例中,我们在setup()函数中定义了一个名为effect的函数,并在它之前使用了onBeforeUnmount()钩子函数,在该函数内部注销了effect。在onUnmounted()钩子函数中输出了组件卸载的消息。我们在组件内部使用effect函数来演示,在组件卸载之前,组件中所有的effect都会执行一次。

总结

Vue3中的生命周期函数在Vue2的基础上进行了一些改进,新添加了一个setup()函数,并为其他生命周期函数改变了名称和行为,以更好地适应Vue3的特性和优化。在使用生命周期函数时,我们需要注意不同生命周期函数的执行时间点和使用场景,合理地利用生命周期函数可以让我们更好地理解组件状态和行为。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue3生命周期钩子函数详解 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • 使用vue和element-ui上传图片及视频文件方式

    为了使用Vue和Element-UI上传图片和视频文件,你需要遵循以下攻略: 步骤1:安装Element-UI 首先,你需要将Element-UI安装到你的Vue项目中。可以通过以下命令来安装它: npm install element-ui -S 步骤2:引入Element-UI 在Vue项目的入口文件(例如main.js)中引入并注册Element-UI…

    Vue 2023年5月28日
    00
  • vue3中h函数的常用使用方式汇总

    下面是“vue3中h函数的常用使用方式汇总”的完整攻略。 简介 在Vue3中,我们可以使用h函数来手动编写渲染函数,动态生成虚拟DOM。h函数实际上是createElement函数的别名,调用前需要先导入。 基本使用 h函数可以通过传入元素的标签名、属性和子节点来创建element。 import { h } from ‘vue’; const vnode …

    Vue 2023年5月27日
    00
  • vue与react详细

    Vue与React详细攻略 1. 概述 Vue和React是当前最流行的JavaScript框架之二,Vue是一款建构用户界面的渐进性框架,React则是一款快速构建UI界面的JavaScript库。这两款框架在构建Web应用、移动应用和桌面应用的时候都表现出了出色的性能和稳定性,因此备受开发者和企业青睐。 2. 开发者使用场景 两者在开发者使用场景上可能有…

    Vue 2023年5月28日
    00
  • vue如何通过日期筛选数据

    下面是Vue如何通过日期筛选数据的完整攻略。 步骤一:引入moment.js库 为了便于处理日期,我们可以使用moment.js库。在Vue项目中,我们可以使用npm进行安装: npm install moment –save 接着,在需要使用日期筛选的页面或组件中,引入moment库: import moment from ‘moment’; 步骤二:设…

    Vue 2023年5月29日
    00
  • vue中get请求如何传递数组参数的方法示例

    关于“vue中get请求如何传递数组参数的方法示例”的攻略,我来详细讲解一下。 1. 为什么需要传递数组参数 在使用vue进行数据传递的过程中,有时会遇到需要传递数组参数的场景。例如,我们需要向后台发送一组数据,这些数据可能是用作查询条件或者是数据的集合等等。此时,我们需要了解如何传递数组参数。 2. 传递数组参数的方法示例 在vue中,我们可以通过修改请求…

    Vue 2023年5月29日
    00
  • 动态Axios的配置步骤详解

    动态Axios是一个常用的网络请求库,其通过封装浏览器内置对象XMLHttpRequest实现的。在使用Axios时,我们需要对其进行配置,以满足特定的请求需求,本文将对Axios的配置进行详细讲解。 配置步骤 安装Axios 在使用Axios之前,需要先安装该库,可以通过以下命令进行安装: npm install axios 导入Axios 在进行Axio…

    Vue 2023年5月27日
    00
  • 关于vue-tree-chart简单的使用

    关于vue-tree-chart简单的使用其实非常简单,一般包含以下几个步骤: 安装vue-tree-chart npm install vue-tree-chart –save 导入vue-tree-chart 在你需要使用vue-tree-chart的组件中,可以使用以下方式进行引入: “` “` 使用vue-tree-chart 在你需要使用vu…

    Vue 2023年5月29日
    00
  • Vue 组件注册实例详解

    Vue 组件注册实例详解 在 Vue 中,组件是构建应用程序的核心部分之一。如果我们想要将一个特定的组件或指令作为全局组件注册,我们可以使用 Vue.component() 方法。另外,我们还可以通过在一个父组件中使用 components 选项来在该组件内部注册一个局部组件。 注册全局组件 如果我们想要在全部的组件中都使用一个组件,那么我们应该将它注册成为…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部