带你一文了解Vue生命周期钩子

带你一文了解Vue生命周期钩子

Vue生命周期钩子是指Vue在组件实例化、数据更新、渲染页面等不同阶段执行的方法。这些钩子函数对于理解Vue的生命周期非常重要,因为他们使得我们有机会在特定时间节点执行自己的代码。

Vue生命周期的三个阶段

Vue的生命周期可以分为三个主要的阶段:

  1. 创建阶段(Creation):在这个阶段Vue实例化组件、设置数据观测、初始化事件等操作。
  2. 更新阶段(Update):当组件的数据发生改变时进入此阶段,触发重新渲染页面。
  3. 销毁阶段(Destruction):这个阶段处理组件销毁前的善后工作,比如清理定时器,取消事件绑定等。

Vue生命周期内部钩子函数

每个Vue实例在生命周期内都会自动地运行一些函数,我们被称之为生命周期钩子,下面是Vue生命周期的所有内部钩子函数:

  1. beforeCreate:在Vue实例化组件之后、数据观测之前执行的,此时 this 指向 Vue 实例本身,其他的钩子函数中 this 都指向了组件上下文。
  2. created:在实例化后,数据观测等数据操作完成,可以进行各种操作但是无法进行dom操作和vue组件渲染操作。
  3. beforeMount:在Vue把模板渲染成html ,并将其插入页面之前执行。
  4. mounted:在Vue把模板渲染成html ,并将其插入页面后执行。可以进行各种dom操作,实例已经挂载完成。
  5. beforeUpdate:在数据更新时执行,这个阶段不允许更改数据。
  6. updated:在数据更新完成并且页面已经重新渲染之后执行,这个阶段允许更改页面和状态,但不能发起新的数据请求。
  7. activated:当使用keep-alive的时候,组件使活跃状态时执行。
  8. deactivated:当使用keep-alive的时候,组件使非活跃状态时执行。
  9. beforeUnmount:在组件销毁之前执行。
  10. unmounted:在组件销毁之后和其它清理工作完成后执行。

生命周期钩子的正确使用

使用生命周期钩子可以允许我们做一些有趣的功能。例如,当创建一个Vue实例时,我们也可以在 beforeCreate 阶段发起一个数据请求。

下面是两个简单的生命周期钩子的示例:

1. 示例:在 created 阶段执行操作

代码:

<template>
  <div>
    <h1>{{ title }}</h1>
  </div>
</template>
<script>
  export default {
    data() {
      return {
        title: '',
      };
    },
    created() {
      // 发起请求
      fetch('https://api.example.com/title')
        .then((response) => response.text())
        .then((title) => {
          this.title = title;
        });
    },
  };
</script>

解释:在组件实例化后、数据观测前,Vue会自动调用 created 函数。这个时候我们可以来发起一个数据请求,并且在请求返回后用title属性保存请求结果,最终再在模板中使用。

2. 示例:在 mounted 阶段执行操作

代码:

<template>
  <div>
    <button @click="increaseCount">点击我增加计数器</button>
    <p>计数器的值为 {{ count }}</p>
  </div>
</template>
<script>
  export default {
    data() {
      return {
        count: 0,
      };
    },
    methods: {
      increaseCount() {
        this.count++;
      },
    },
    mounted() {
      // 在模板渲染到页面上之后,绑定一个事件监听器,当计数器到达20的时候弹出提示框
      document.addEventListener('count-is-20', () => {
        alert('计数器已经到达20了!恭喜!');
      });
    },
    updated() {
      // 在更新阶段时判断计数器是否为20,如果是则触发事件,弹出提示框
      if (this.count === 20) {
        document.dispatchEvent(new Event('count-is-20'));
      }
    },
  };
</script>

解释:在 mounted 阶段,Vue会自动把组件渲染的HTML插入到页面DOM中,这时我们可以来进行各种dom操作。在这个示例中,我们通过向 document 添加事件监听器 count-is-20 来监测计数器的更新,当计数器计数到 20 时弹窗提示。注意,我们在 updated 阶段验证计数器是否达到 20,因为这是一个数据变更的事件钩子。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:带你一文了解Vue生命周期钩子 - Python技术站

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

相关文章

  • Vue 监听列表item渲染事件方法

    Vue 提供了许多从简单的 v-on 指令到复杂的自定义事件的事件监听器,用于应对各种需要与用户交互或动态响应的场景。在 Vue 列表组件渲染中,我们经常需要监听列表 item 的渲染事件以执行一些自定义的操作,如何实现呢?本文将为大家介绍 Vue 监听列表 item 渲染事件的方法及应用。 理解 Vue 列表渲染过程 在介绍如何监听列表 item 渲染事件…

    Vue 2023年5月27日
    00
  • uni-app调取接口的3种方式以及封装uni.request()详解

    对于这个话题我可以提供以下完整攻略: uni-app调取接口的3种方式以及封装uni.request()详解 在uni-app中,我们一般采用uni.request()方法来调用后端接口。下面我们将介绍三种调用方式以及如何封装uni.request()方法。 1. 直接调用 直接调用指的是将请求地址、请求类型、请求参数等信息直接写在uni.request()…

    Vue 2023年5月28日
    00
  • Vue组件通信$attrs、$listeners实现原理解析

    我来为您详细讲解“Vue组件通信$attrs、$listeners实现原理解析”的完整攻略。 一、背景介绍 在Vue组件的开发中,如何实现父子组件之间的通信一直是一个比较困扰开发者的难点。Vue官方提供的有prop、$emit、$parent/$children、$refs等方法,而$attrs和$listeners则是比较特殊的属性,不仅可以实现父子组件的…

    Vue 2023年5月28日
    00
  • vue.js指令v-for使用以及下标索引的获取

    Vue.js 是一款流行的渐进式 JavaScript 框架,为开发者提供了丰富多样的语法和指令。其中的 v-for 指令用于遍历数组或对象并渲染相应的内容。下面,我们详细讲解 v-for 的使用及下标索引的获取。 基础使用 v-for 的基本语法为: <div v-for="[item] in [array]"> {{ it…

    Vue 2023年5月27日
    00
  • vue3+ts中ref与reactive指定类型实现示例

    下面我将为你详细讲解“vue3+ts中ref与reactive指定类型实现示例”的完整攻略。 一、Ref 1.1 简介 在 Vue 3 中,ref 是一个函数,它可以创建一个响应式数据,ref 函数返回一个对象,对象中包含着响应式数据的值。 1.2 使用 使用 ref 创建响应式数据的格式如下: import { ref } from ‘vue’; cons…

    Vue 2023年5月27日
    00
  • uniapp小程序之配置首页搜索框功能的实现

    下面我来分享一下“uniapp小程序之配置首页搜索框功能的实现”的攻略。 一、前置条件 在开始配置首页搜索框功能前,需要保证以下两点: 你已经正确创建了uniapp小程序项目,并且已经初始化了uni-app基础项目 你已经在pages文件夹中创建了需要展示搜索框的页面 二、实现步骤 1. 配置顶部导航栏 在需要展示搜索框的页面,打开对应的vue文件,找到顶部…

    Vue 2023年5月28日
    00
  • Vue数字输入框组件的使用方法

    下面是使用Vue数字输入框组件的完整攻略。 1. 确定Vue数字输入框组件的使用场景 Vue数字输入框组件可以用于需要获取数字输入的场景,如商家价格设置、购物车商品数量选择等。 2. 安装Vue数字输入框组件 可以通过npm安装Vue数字输入框组件: npm install vue-numeric-input –save 3. 引入Vue数字输入框组件 在…

    Vue 2023年5月27日
    00
  • Vue3学习之事件处理详解

    Vue3学习之事件处理详解 在Vue3中,事件处理是非常常见的操作。Vue3提供了许多事件处理函数,方便开发者处理各种事件。本文将详细讲解Vue3中的事件处理,包括以下内容: @click、@dbclick等基本事件处理 v-model的事件处理 自定义事件 基本事件处理 @click @click是Vue3中最常用的事件处理函数之一。它可以在元素被点击时触…

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