vue中的生命周期及钩子函数

Vue 是一款流行的前端框架,它的设计理念是数据驱动视图。在 Vue 中,每个组件都有一组生命周期钩子函数。钩子函数是指在组件的某个时刻会被调用的函数。Vue 的生命周期分为四个阶段:创建、挂载、更新和销毁阶段。

创建阶段的生命周期钩子函数

在创建阶段,Vue 将会创建组件的实例,并先后调用以下生命周期钩子函数:

beforeCreate

在实例被创建之前,beforeCreate 将被调用。在这个阶段,组件实例还未创建,所以我们无法访问到 this 对象中的数据和方法,此时最好不要进行复杂的 DOM 操作。下面是一个示例:

export default {
  beforeCreate() {
    console.log('beforeCreate');
  },
};

created

created 将在实例被创建后立即调用。在这个阶段,组件实例已经被创建,可以访问到 this 对象中的数据和方法,但是组件还没有被挂载到文档中。下面是一个示例:

export default {
  created() {
    console.log('created');
  },
};

挂载阶段的生命周期钩子函数

在挂载阶段,Vue 将会将组件挂载到文档中,并先后调用以下生命周期钩子函数:

beforeMount

在挂载之前,beforeMount 将被调用。在这个阶段,组件已经被创建,但是还没有被挂载到文档中。此时可以对组件进行一些 DOM 操作。下面是一个示例:

export default {
  beforeMount() {
    console.log('beforeMount');
  },
};

mounted

在挂载后,mounted 将被调用。在这个阶段,组件已经被挂载到文档中,可以访问到 this 对象中的数据和方法,可以进行一些与 DOM 相关的操作。下面是一个示例:

export default {
  mounted() {
    console.log('mounted');
  },
};

更新阶段的生命周期钩子函数

在更新阶段,Vue 将会根据数据的变化,更新组件的状态,重新渲染组件,并先后调用以下生命周期钩子函数:

beforeUpdate

在数据更新时,beforeUpdate 将被调用。在这个阶段,组件的状态已经发生了变化,但是还没有重新渲染,此时可以对数据进行一些处理。下面是一个示例:

export default {
  beforeUpdate() {
    console.log('beforeUpdate');
  },
};

updated

在组件更新之后,updated 将被调用。在这个阶段,组件已经被重新渲染,可以访问到更新后的 DOM。此时应该避免更新数据,可能会导致死循环。下面是一个示例:

export default {
  updated() {
    console.log('updated');
  },
};

销毁阶段的生命周期钩子函数

在销毁阶段,Vue 将会销毁组件的实例,并先后调用以下生命周期钩子函数:

beforeDestroy

在组件销毁之前,beforeDestroy 将被调用。在这个阶段,组件还未被销毁,此时可以对组件进行一些清理工作,比如取消事件监听器和定时器。下面是一个示例:

export default {
  beforeDestroy() {
    console.log('beforeDestroy');
  },
};

destroyed

在组件销毁后,destroyed 将被调用。在这个阶段,组件已经被彻底销毁,无法访问到组件的数据和方法。下面是一个示例:

export default {
  destroyed() {
    console.log('destroyed');
  },
};

以上就是 Vue 中的生命周期及钩子函数的完整攻略。

示例1:

下面是一个简单的计时器组件,当组件被挂载和更新时,将会调用 setInterval 自动更新计时器的状态,而在组件被销毁时清除计时器。

<template>
  <div>{{ timer }}</div>
</template>

<script>
export default {
  data() {
    return {
      timer: 0,
      intervalId: null,
    };
  },
  mounted() {
    this.intervalId = setInterval(() => {
      this.timer++;
    }, 1000);
  },
  updated() {
    this.intervalId = setInterval(() => {
      this.timer++;
    }, 1000);
  },
  beforeDestroy() {
    clearInterval(this.intervalId);
  },
};
</script>

示例2:

下面是一个简单的表格组件,当组件更新时,将判断表单数据是否发生变化,如果有变化,则弹出确认弹窗。

<template>
  <table>
    <thead>
      <tr>
        <th>ID</th>
        <th>Name</th>
      </tr>
    </thead>
    <tbody>
      <tr v-for="item in items" :key="item.id">
        <td>{{ item.id }}</td>
        <td>{{ item.name }}</td>
      </tr>
    </tbody>
  </table>
</template>

<script>
export default {
  props: {
    items: {
      type: Array,
      default: () => [],
    },
  },
  data() {
    return {
      prevProps: [],
    };
  },
  beforeUpdate() {
    this.prevProps = this.props.items;
  },
  updated() {
    if (JSON.stringify(this.props.items) !== JSON.stringify(this.prevProps)) {
      this.showConfirm();
    }
  },
  methods: {
    showConfirm() {
      if (confirm('The form data has been changed. Do you want to save it?')) {
        // save form data
      }
    },
  },
};
</script>

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

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

相关文章

  • vue.js实现插入数值与表达式的方法分析

    下面是“vue.js实现插入数值与表达式的方法分析”的完整攻略。 1. 插入数值 在 Vue.js 中,我们通常用双花括号 {{}} 来插入一个数据的值。例如: <p>{{ message }}</p> 这里的 message 可以是 Vue 实例中的一个属性,例如: var app = new Vue({ el: ‘#app’, d…

    Vue 2023年5月27日
    00
  • 解析vue data不可以使用箭头函数问题

    解析vue中的data不可以使用箭头函数问题,主要是因为箭头函数没有自己的上下文,而且 Vue 中传递给 data 的对象必须是可扩展的,以便在数据更新时进行响应。下面是该问题的解决攻略: 方法1:使用传统的函数 在Vue组件中,如果要解析data对象,应该在声明周期的created或mounted函数中使用传统的函数来定义data。如下所示: <te…

    Vue 2023年5月28日
    00
  • vue todo-list组件发布到npm上的方法

    发布vue todo-list组件到npm上的步骤如下: 步骤一:创建项目 首先,在本地环境选择一个合适的位置创建一个新项目文件夹,使用命令行工具进入该文件夹。执行以下命令来创建一个新的npm项目: npm init 该命令会让你输入新项目的一些基本信息,并生成一个package.json文件。 步骤二:编写代码 在创建好的项目文件夹下,按照vue组件编写流…

    Vue 2023年5月28日
    00
  • 如何写好一个vue组件,老夫的一年经验全在这了(推荐)

    下面就来详细讲解如何写好一个Vue组件的完整攻略。 1. 确定组件功能和结构 在编写Vue组件前,首先需要明确组件的功能和结构。可以根据需求进行划分,例如按照布局组件、功能组件、业务组件等进行分类。 确定组件功能后,需要确定组件的结构。通常情况下,组件结构应该包括template、script和style三个部分。其中,template部分负责渲染页面,sc…

    Vue 2023年5月27日
    00
  • Vue简单实现原理详解

    Vue简单实现原理详解 Vue是一款流行的前端JavaScript框架,能够帮助我们更高效地开发Web应用程序。本文主要介绍Vue的简单实现原理,包括数据绑定、指令和组件等方面。 数据绑定原理 Vue的数据绑定是其最重要的特性之一,其实现原理是通过Vue的响应式系统来实现的。当我们使用Vue创建一个对象时,它会将指定的属性转变为响应式属性(objects)。…

    Vue 2023年5月27日
    00
  • vue打包后生成一个配置文件可以修改IP

    要修改Vue打包后生成的IP地址,需要进行以下步骤: 找到Vue项目的根目录下的config文件夹,其中包含了打包的配置文件,比如’prod.env.js’和’index.js’。 在’prod.env.js’中添加以下代码:API_ROOT: ‘”http://your_server_ip_address/api”‘,其中your_server_ip_ad…

    Vue 2023年5月28日
    00
  • Vue动态组件实现异常处理方法

    下面就是Vue动态组件实现异常处理的完整攻略: 1. Vue动态组件介绍 Vue的动态组件是指通过动态地绑定组件的名称来实现动态加载不同组件的技术。Vue动态组件是Vue.js框架中的一项重要功能,它允许开发人员将应用程序拆分为基本组件,并根据需要在组件之间进行动态转换。 2. Vue中异常处理的重要性 在开发过程中,难免会出现各种各样的异常错误,如组件的数…

    Vue 2023年5月28日
    00
  • vue demi支持sfc方式的vue2vue3通用库开发详解

    下面是关于“vue demi支持sfc方式的vue2vue3通用库开发详解”的完整攻略: 什么是vue demi Vue demi 是一个开源库,它可以让你使用 Vue.js 同时支持 Vue.js 2.x 和 Vue.js 3.x。Vue demi 内部通过条件编译定义了两份代码,以便在不同版本的 Vue.js 之间切换。当构建库时,可以使用 Vue de…

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