Vue生命周期函数执行顺序(使用注意事项)

文章目录

  • beforeCreate
  • created
  • beforeMount
  • mounted
  • beforeUpdate
  • updated
  • beforeDestroy
  • destroyed

Vue.js 是一个基于 MVVM 模式的前端框架,它的核心是一个响应式的数据绑定系统。在 Vue.js 中,组件是一个可复用的 Vue 实例,它拥有自己的生命周期钩子函数,用于在组件生命周期的不同阶段执行一些特定的逻辑。下面通过例子介绍一下常见的 Vue 组件生命周期:
在这里插入图片描述

beforeCreate

beforeCreate():在实例被创建之初执行的函数。在这个钩子函数中,可以进行一些初始化的操作,例如初始化数据、注入组件等等。该函数执行时,Vue实例的数据观测和事件配置都还没有被设置,所以不能访问实例的this属性,也不能访问DOM元素。

<template><div>{{ message }}</div>
</template><script>
export default {beforeCreate() {console.log('beforeCreate')this.message = 'Hello, Vue!'},created() {console.log('created')},data() {return {message: ''}}
}
</script>

示例中,beforeCreate钩子函数中设置了message属性的值为’Hello, Vue!'。在created钩子函数中,可以看到这个属性已经被设置,所以可以将其渲染到模板中。

注意:beforeCreate钩子函数只会在实例被创建之初执行一次,之后不会再执行。如果需要在实例更新之前进行一些操作,可以使用beforeUpdate钩子函数。

created

created():在实例被创建之后立即执行。在这个钩子函数中,可以进行一些初始化的操作,例如获取数据、设置计算属性等等。在这个钩子函数被执行时,Vue实例已经完成了数据观测和事件配置,但还没有开始DOM编译和挂载,所以仍然不能访问DOM元素。

<template><div>{{ message }}</div>
</template><script>
export default {created() {console.log('created')this.getMessage()},data() {return {message: ''}},methods: {getMessage() {// 获取数据的方法this.message = 'Hello, Vue!'}}
}
</script>

示例中,created钩子函数中调用了getMessage方法来获取数据并设置了message属性的值。在模板中,可以看到这个属性已经被渲染出来了。

注意:created钩子函数只会在实例被创建之后执行一次,之后不会再执行。如果需要在实例更新之后进行一些操作,可以使用updated钩子函数。

beforeMount

beforeMount():在实例挂载之前执行。在这个钩子函数中,可以对模板进行一些编译和渲染前的操作。在这个钩子函数被执行时,Vue实例已经完成了数据观测和计算属性的计算,但还没有开始DOM编译和挂载。

<template><div ref="myDiv">{{ message }}</div>
</template><script>
export default {beforeMount() {console.log('beforeMount')this.$refs.myDiv.style.color = 'red'},data() {return {message: 'Hello, Vue!'}}
}
</script>

示例中,beforeMount钩子函数中设置了myDiv元素的颜色为红色。在模板中,可以看到这个颜色已经被应用到了渲染出来的元素中。

注意:beforeMount钩子函数只会在实例挂载之前执行一次,之后不会再执行。如果需要在实例销毁之前进行一些操作,可以使用beforeDestroy钩子函数。

mounted

mounted():在实例挂载之后立即执行。在这个钩子函数中,可以对模板进行一些操作,例如访问DOM元素、使用第三方插件等等。在这个钩子函数被执行时,Vue实例已经完成了DOM编译和挂载,所以可以访问DOM元素。

<template><div ref="myDiv">{{ message }}</div>
</template><script>
export default {mounted() {console.log('mounted')this.$refs.myDiv.style.color = 'red'},data() {return {message: 'Hello, Vue!'}}
}
</script>

示例中,mounted钩子函数中设置了myDiv元素的颜色为红色。在模板中,可以看到这个颜色已经被应用到了渲染出来的元素中。

注意:,mounted钩子函数只会在实例挂载之后执行一次,之后不会再执行。如果需要在实例更新之后进行一些操作,可以使用updated钩子函数。如果需要在实例销毁之前进行一些操作,可以使用beforeDestroy钩子函数。

beforeUpdate

beforeUpdate():在数据更新之前立即执行。在这个钩子函数中,可以进行一些数据更新前的操作,例如获取更新前的DOM信息等等。在这个钩子函数被执行时,Vue实例已经完成了数据的计算和渲染,但还没有开始DOM重新渲染。

<template><div>{{ message }}</div>
</template><script>
export default {beforeUpdate() {console.log('beforeUpdate')},data() {return {message: 'Hello, Vue!'}},methods: {updateMessage() {this.message = 'Hello, World!'}}
}
</script>

示例中,定义了一个updateMessage方法,用于更新message属性的值。在点击按钮之后,message属性的值将会被更新,并且beforeUpdate钩子函数会被执行。

注意:beforeUpdate钩子函数只会在数据更新之前执行一次,之后不会再执行。如果需要在数据更新之后进行一些操作,可以使用updated钩子函数。

updated

updated():在数据更新之后立即执行。在这个钩子函数中,可以对更新后的DOM进行操作,例如获取更新后的DOM信息等等。在这个钩子函数被执行时,Vue实例已经完成了数据的计算和渲染,也完成了DOM重新渲染。

<template><div ref="myDiv">{{ message }}</div><button @click="updateMessage">Update Message</button>
</template><script>
export default {updated() {console.log('updated')this.$refs.myDiv.style.color = 'red'},data() {return {message: 'Hello, Vue!'}},methods: {updateMessage() {this.message = 'Hello, World!'}}
}
</script>

示例中,定义了一个updateMessage方法,用于更新message属性的值。在点击按钮之后,message属性的值将会被更新,并且updated钩子函数会被执行。在updated钩子函数中,将myDiv元素的颜色设置为红色。

注意:updated钩子函数只会在数据更新之后执行一次,之前不会执行。如果需要在数据更新之前进行一些操作,可以使用beforeUpdate钩子函数。如果需要在实例销毁之前进行一些操作,可以使用beforeDestroy钩子函数。

beforeDestroy

beforeDestroy():在实例销毁之前立即执行。在这个钩子函数中,可以进行一些实例销毁前的操作,例如清除定时器、取消事件监听等等。

<template><div>{{ message }}</div><button @click="destroy">Destroy Instance</button>
</template><script>
export default {beforeDestroy() {console.log('beforeDestroy')// 清除定时器、取消事件监听等等},data() {return {message: 'Hello, Vue!'}},methods: {destroy() {this.$destroy()}}
}
</script>

示例中,定义了一个destroy方法,用于销毁Vue实例。在点击按钮之后,beforeDestroy钩子函数会被执行。

注意:beforeDestroy钩子函数只会在实例销毁之前执行一次,之后不会再执行。如果需要在实例销毁之后进行一些操作,可以使用destroyed钩子函数。

destroyed

destroyed():在实例销毁之后立即执行。在这个钩子函数中,可以进行一些实例销毁后的操作,例如清除定时器、取消事件监听等等。

<template><div>{{ message }}</div><button @click="destroy">Destroy Instance</button>
</template><script>
export default {destroyed() {console.log('destroyed')// 清除定时器、取消事件监听等等},data() {return {message: 'Hello, Vue!'}},methods: {destroy() {this.$destroy()}}
}
</script>

示例中,定义了一个destroy方法,用于销毁Vue实例。在点击按钮之后,destroyed钩子函数会被执行。

注意:destroyed钩子函数只会在实例销毁之后执行一次,之前不会执行。如果需要在实例销毁之前进行一些操作,可以使用beforeDestroy钩子函数。

另外,Vue.js还提供了其他一些生命周期函数,如activated()和deactivated()用于处理组件的激活和非激活状态,errorCaptured()用于捕获组件内部错误等等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/213766.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大文件传输软件和传统软件的优缺点

在当前信息时代&#xff0c;文件和数据的传输已成为我们工作和生活中不可或缺的一环。无论是向同事发送报告还是与朋友分享电影&#xff0c;我们都需要依赖软件完成这些操作。然而&#xff0c;随着文件和数据容量的增大&#xff0c;传统的文件传输软件如FTP、HTTP、SMB、NFS等已…

pycharm中py文件设置参数

在py文件中右键 直接对应复制进去即可

Android:The emulator process for AVD Pixel_2_API_29 was killed

The emulator process for AVD Pixel_2_API_29 was killed 报错描述&#xff1a; 第一次安装Android studio好不容易解决gradle启动模拟器又出现了以下错误 The emulator process for AVD Pixel_2_API_29 was killed原因一&#xff1a; 需要安装Intel x86 Emulator Acceleer…

开启AI时代产品管理新篇章——写给产品经理的一本跨界书

在数字化时代&#xff0c;产品经理的角色和能力要求不断演变。徐修建所著的《搜广推策略产品经理——互联网大厂搜索广告推荐案例》恰逢其时&#xff0c;为新时代的产品经理提供了宝贵的指南。 首先&#xff0c;它通过通俗易懂的语言和生动案例&#xff0c;成功揭示了互联网大厂…

Linux-----find命令

一、find命令 find介绍&#xff1a;    find是可以通过文件名称、类型、大小、权限属性、时间戳等条件在指定目录下查找对应文件或者目录的工具&#xff1b;还可以配合相关命令对匹配到的文件作出后续处理。 二、工作原理及特点 find在查找文件时会遍历指定的目录&#xff…

基于conda环境使用mamba/conda安装配置QIIME 2 2023.9 Amplicon扩增子分析环境,q2cli主要功能模块介绍及使用

QIIME 2 2023.9 Amplicon Distribution介绍&#xff1a; 概述 qiime团队专门针对高通量扩增子序列分析退出的conda集成环境&#xff0c;包括了主要和常见的扩增子分析模块&#xff0c;用户可以单独使用各个模块&#xff0c;也可以使用各模块组成不同的分析流程。从2023.09版本…

外汇天眼:掌握这个技巧,你也能成为交易高手

在金融市场这个大潮中&#xff0c;外汇交易因其高杠杆、24小时交易等特点吸引着无数交易者。然而成功的交易并非易事&#xff0c;对于投资者来说&#xff0c;外汇交易市场是一个复杂且多变的市场&#xff0c;要在外汇市场中获得成功就需要扎实的外汇金融基础知识和独特的策略&a…

RocketMQ - Spring Cloud Alibaba RocketMQ

Spring Cloud Stream是Spring Cloud体系内的一个框架&#xff0c;用于构建与共享消息传递系统连接的高度可伸缩的事件驱动微服务&#xff0c;其目的是简化消息业务在Spring Cloud应用中的开发。 Spring Cloud Stream的架构图如下所示&#xff0c;应用程序通过Spring Cloud Str…

论文阅读《Domain Generalized Stereo Matching via Hierarchical Visual Transformation》

论文地址&#xff1a;https://openaccess.thecvf.com/content/CVPR2023/html/Chang_Domain_Generalized_Stereo_Matching_via_Hierarchical_Visual_Transformation_CVPR_2023_paper.html 概述 立体匹配模型是近年来的研究热点。但是&#xff0c;现有的方法过分依赖特定数据集上…

五年制专转本备考冲刺阶段,老师给你六点建议助你上岸

1、热衷的不是学习&#xff0c;而是思考 人与人之间最大的差别在于思维的差别&#xff0c;也可以说是思考的差别。专转本也是如此&#xff0c;有人思考得简单&#xff0c;有人思考得复杂&#xff1b;有人想得全面&#xff0c;有人想得肤浅。 只有善于思考&#xff0c;才会对问…

100:ReconFusion: 3D Reconstruction with Diffusion Priors

简介 官网 少样本重建必然导致nerf失败&#xff0c;论文提出使用diffusion模型来解决这一问题。从上图不难看出&#xff0c;论文一步步提升视角数量&#xff0c;逐步与Zip-NeRF对比。 实现流程 Diffusion Model for Novel View Synthesis 给定一组输入图像 x o b s { x i…

Jmeter beanshell编程实例

1、引言 BeanShell是一种小型的&#xff0c;免费的&#xff0c;可嵌入的符合Java语法规范的源代码解释器&#xff0c;具有对象脚本语言特性。 在Jmeter实践中&#xff0c;由于BeanShell组件较高的自由度&#xff0c;通常被用来处理较为复杂&#xff0c;其它组件难以处理的问题…

c语言:文件操作(1)

前言&#xff1a;为什么要使用文件 使用文件可以让程序在不同运行之间保存和读取数据。这样可以实现持久化存储&#xff0c;即使程序关闭后数据也不会丢失。文件也可以用于数据交换&#xff0c;允许不同程序之间共享信息。在 C 语言中&#xff0c;文件还可以用于读取配置信息&…

系统架构设计师教程(三)信息系统基础知识

信息系统基础知识 3.1 信息系统概述3.1.1 信息系统的定义3.1.2 信息系统的发展3.1.3 信息系统的分类3.1.4 信息系统的生命周期3.1.5 信息系统建设原则3.1.6 信息系统开发方法 3.2 业务处理系统 (TPS)3.2.1 业务处理系统的概念3.2.2 业务处理系统的功能3.2.3 业务处理系统的特点…

Python:核心知识点整理大全13-笔记

目录 6.4.3 在字典中存储字典 6.5 小结 第7章 用户输入和while循环 7.1 函数 input()的工作原理 7.1.1 编写清晰的程序 7.1.2 使用 int()来获取数值输入 7.1.3 求模运算符 7.1.4 在 Python 2.7 中获取输入 7.2 while 循环简介 7.2.1 使用 while 循环 往期快速传送门…

SPI 通信-stm32入门

本节我们将继续学习下一个通信协议 SPI&#xff0c;SPI 通信和我们刚学完的 I2C 通信差不多。两个协议的设计目的都一样&#xff0c;都是实现主控芯片和各种外挂芯片之间的数据交流&#xff0c;有了数据交流的能力&#xff0c;我们主控芯片就可以挂载并操纵各式各样的外部芯片&…

gpu版本的GNN的demo

1、当涉及到在GPU上运行图神经网络&#xff08;GNN&#xff09;时&#xff0c;通常使用深度学习框架&#xff0c;如PyTorch或TensorFlow。在这里&#xff0c;我将为您提供一个使用PyTorch Geometric库实现GNN的简单示例。 首先&#xff0c;确保您已经安装了PyTorch和PyTorch G…

第 375 场 LeetCode 周赛题解

A 统计已测试设备 模拟&#xff1a;记录当前已测试设备数量 class Solution { public:int countTestedDevices(vector<int> &batteryPercentages) {int res 0;int s 0;for (auto x: batteryPercentages) {if (x - s > 0) {res;s;}}return res;} };B 双模幂运算 …

【无线网络技术】——无线城域网(学习笔记)

&#x1f4d6; 前言&#xff1a;无线城域网&#xff08;WMAN&#xff09;是指在地域上覆盖城市及其郊区范围的分布节点之间传输信息的本地分配无线网络。能实现语音、数据、图像、多媒体、IP等多业务的接入服务。其覆盖范围的典型值为3~5km&#xff0c;点到点链路的覆盖可以高达…

少儿编程考级:激发孩子逻辑思维能力的关键

在当今信息化时代&#xff0c;少儿编程已经成为孩子们不可或缺的一项技能。而少儿编程考级&#xff0c;则是检验孩子们在这一技能上所取得的成就的重要途径。少儿编程考级不仅能够激发孩子们的逻辑思维能力&#xff0c;还能够提高他们的动手能力和创造力。6547网将详细介绍少儿…