Vue3生命周期钩子函数详解

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日

相关文章

  • JavaScript函数封装随机颜色验证码(完整代码)

    让我来详细讲解“JavaScript函数封装随机颜色验证码(完整代码)”的完整攻略。 题目描述 我们需要开发一个可以生成随机颜色的验证码的JavaScript函数,并将其封装成一个可复用的代码。 解决方案 我们可以通过以下步骤来实现该功能: 第一步:定义变量和函数 首先,我们需要定义一些变量和函数,如下所示: var code, codeLength = 6…

    Vue 2023年5月28日
    00
  • 详解Vue中使用v-for语句抛出错误的解决方案

    下面是详解Vue中使用v-for语句抛出错误的解决方案的完整攻略。 问题描述 在Vue中使用v-for语句时,有时会出现以下错误: [Vue warn]: Error in render: "TypeError: Cannot read property ‘xxx’ of undefined" 这个错误通常发生在v-for语句循环数据时,…

    Vue 2023年5月27日
    00
  • 手把手教你Vue-cli项目的搭建

    手把手教你Vue-cli项目的搭建 Vue-cli是基于Vue.js进行快速开发的标准工具。Vue-cli中集成了一些插件,在创建新项目时可以直接选择安装,开发过程中能够提高开发效率。 工具准备 在进行项目搭建前需要安装以下工具: Node.js:可以从官网https://nodejs.org/en/下载最新版本进行安装。 Vue-cli:在安装了Node.…

    Vue 2023年5月28日
    00
  • 详解vue2.0脚手架的webpack 配置文件分析

    下面我将为你详细讲解“详解vue2.0脚手架的webpack 配置文件分析”的完整攻略。 一、前言 在进行Vue2.0开发时,使用脚手架可以减少很多配置时间,提高开发效率。而其中的webpack配置文件对整个应用的打包和构建起到了重要的作用。因此,对webpack配置文件进行分析和解读是非常必要的。 二、webpack 配置文件分析 2.1 入口文件配置 在…

    Vue 2023年5月28日
    00
  • Vue3.x源码调试的实现方法

    关于“Vue3.x源码调试的实现方法”的完整攻略,我可以和你详细讲解以下步骤: 步骤一:准备工作 在进行Vue3.x源码调试之前,需要先进行一些准备工作。需要安装一个支持Markdown格式的编辑器,比如VS Code。然后要安装Chrome浏览器和Chrome DevTools。 步骤二:安装Vue源码 在开始之前,我们需要安装Vue.js源码。源码可以从…

    Vue 2023年5月27日
    00
  • Vue的路由及路由钩子函数的实现

    来给您详细讲解一下 “Vue的路由及路由钩子函数的实现”。 一、Vue的路由机制 Vue.js 是一款轻量级的 JavaScript 框架,为我们提供了一套完整的解决方案。Vue 的路由机制实现了单页应用(SPA)的核心,通过改变 URL 地址实现页面的切换,而不像传统的多页应用刷新整个页面。Vue 的路由是以插件形式进行管理的,它提供了很多的路由接口和钩子…

    Vue 2023年5月27日
    00
  • VUE项目初建和常见问题总结

    VUE项目初建和常见问题总结 项目初建 1. 安装Vue脚手架 前置条件:需要已安装Node.js和npm npm是Node.js的包管理器,可以使用以下命令检查Node.js和npm是否已安装: node -v # 查看Node.js版本 npm -v # 查看npm版本 安装Vue脚手架的命令为: npm install -g @vue/cli 2. 创…

    Vue 2023年5月28日
    00
  • vue实现周日历切换效果

    接下来我会详细讲解如何用vue实现周日历切换效果。 前置知识 在学习如何用vue实现周日历切换效果之前,需要掌握以下技术: HTML基础知识 CSS基础知识 JavaScript基础知识 Vue.js基础知识 实现步骤 步骤一:创建日历组件 我们可以通过vue-cli来创建新的项目,然后使用vue组件创建我们的日历组件。通过组件,我们可以灵活地控制日历的显示…

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