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

yizhihongxing

带你一文了解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日

相关文章

  • 让你30分钟快速掌握vue3教程

    下面是详细讲解“让你30分钟快速掌握Vue3教程”的完整攻略: 1. 前置知识 在学习Vue3之前,最好了解以下知识: 基本的HTML、CSS和JavaScript知识。 Vue.js的基本概念和语法。如果你不了解Vue.js,请先学习Vue.js的教程。 2. 安装以及项目搭建 首先要安装Vue.js 3。可以使用以下命令安装: npm install -…

    Vue 2023年5月27日
    00
  • vue.js异步上传文件前后端实现代码

    下面我会详细地讲解“Vue.js异步上传文件前后端实现代码”的完整攻略。 准备工作 在正式开始编写代码之前,我们需要进行一些准备工作: 确认后端服务器是否支持文件上传,并且上传的文件大小是否有限制。 安装Vue.js插件vue-file-upload,它提供了非常方便的上传文件功能。 前端实现 添加上传组件 首先,我们需要在页面中添加上传组件。可以使用vue…

    Vue 2023年5月28日
    00
  • vue深拷贝的3种实现方式小结

    本文将详细讲解三种vue深拷贝的实现方式,分别为递归实现、JSON.parse/stringify、lodash库实现。下面将分为以下几个部分来介绍。 1. 递归实现 递归实现是一种最简单的深拷贝方式,其代码实现如下: function deepClone(obj) { if (obj === null || typeof obj !== "obj…

    Vue 2023年5月27日
    00
  • vue使用ajax获取后台数据进行显示的示例

    使用 Vue.js 进行前端开发时,常常需要从后端获取数据,并将其显示在页面上。其中一个常用的方式是通过 Ajax 技术向后端服务器发送 HTTP 请求,在得到响应后在前端页面上进行展示。下面是使用 Vue.js 实现向后端服务器发送 Ajax 请求并将其返回结果显示在页面上的示例攻略。 1. 在 Vue.js 中使用 Ajax Vue.js 提供了内置的 …

    Vue 2023年5月28日
    00
  • 教你用Vue基础语法来写一个五子棋小游戏

    教你用Vue基础语法来写一个五子棋小游戏 1. 前言 本篇攻略将通过使用 Vue 基础语法实现一个简单的五子棋小游戏。这个项目不是一个完整可玩的游戏,它只是演示了使用Vue框架来实现五子棋的各种功能和思路。在这个过程中,你将了解到如何使用Vue开发一个复杂的项目。如果你是初学者,建议先学习 Vue 的基础语法再来实践本文内容。 2. 开始实现五子棋小游戏 首…

    Vue 2023年5月27日
    00
  • vue脚手架vue-cli的卸载与安装方式

    下面是关于“vue脚手架vue-cli的卸载与安装方式”的完整攻略。 一、卸载vue-cli 1. 全局卸载 如果你使用的是全局安装的方式,则可以使用npm命令进行卸载。在命令行中输入以下命令: npm uninstall -g vue-cli 2. 本地卸载 如果你使用的是本地安装的方式,则需要进入到项目中进行卸载。在项目中打开命令行窗口,输入以下命令: …

    Vue 2023年5月27日
    00
  • vue组件内部引入外部js文件的方法

    下面是详细的Vue组件内部引入外部js文件方法的攻略: 1. 在Vue组件的script中引入外部js文件 Vue组件的script标签中可以直接引入外部的js文件,例如: <template> <div> <!– 省略组件模板代码 –> </div> </template> <scrip…

    Vue 2023年5月28日
    00
  • JS正则匹配URL网址的方法(可匹配www,http开头的一切网址)

    下面是JS正则匹配URL网址的方法(可匹配www,http开头的一切网址)的完整攻略: 首先,我们需要先了解一下正则表达式。正则表达式是一种专门描述字符串特征的方式,可以用来验证输入是否符合标准格式、搜索或替换字符串等。 接下来,我们需要知道匹配URL网址的正则表达式。以下是匹配URL网址的正则表达式,可以匹配www,http开头的一切网址: /^((htt…

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