Vue组件生命周期深度剖析:从创建到销毁的八大钩子实战指南

在这里插入图片描述

系列文章目录

  • Vue核心指令解析:探索MVVM与数据操作之美

文章目录

  • 系列文章目录
  • 前言
  • 一、Vue生命周期是什么?
  • 二、钩子函数讲解
    • 1. beforeCreate( 创建前 )
    • 2. created ( 创建后 )
    • 3. beforeMount(挂载前)
    • 4. mounted(挂载后)
    • 5. beforeUpdate(更新前)
    • 6. updated(更新后)
    • 7. beforeDestroy(销毁前)
    • 8. destroyed(销毁后)
    • 9. 代码实现钩子函数


前言

    本文将详细介绍Vue组件的生命周期,包括其各个阶段的含义和作用,以及每个阶段所对应的钩子函数的使用方法。我们将逐一解析beforeCreated、created、beforeMount、mounted、beforeUpdate、updated、beforeDestroy和destroyed这八大钩子函数,并通过一个简单的实际代码案例展示它们的具体应用。


一、Vue生命周期是什么?

Vue实例有一个完整的 生命周期,也就是说从开始创建、初始化数据、编译模板、挂载DOM、渲染-更新-渲染、销毁等一系列过程,我们称为Vue 实例的生命周期,钩子 就是在某个阶段给你一个做某些处理的机会。

生命周期图

在这里插入图片描述

二、钩子函数讲解

1. beforeCreate( 创建前 )

在实例初始化之后,数据观测(data observer)和事件配置(event/watcher) 之前被调用,此时组件的选项对象还未创建,el 和 data 并未初始化,因此无法访问methods, data, computed的方法和数据。

2. created ( 创建后 )

实例已经创建完成之后被调用,在这一步,实例已完成以下配置:数据观测(data observer)、属性和方法的运算,watch/event事件回调,完成了data 数据的初始化,el没有。 然而,挂载阶段还没有开始, $el属性目前不可见。
这是一个常用的生命周期,因为你可以调用methods中的方法,改变data中的数据,并且修改可以通过vue的响应式绑定体现在页面上,获取computed中的计算属性等等,通常我们可以在这里对实例进行
预处理。

3. beforeMount(挂载前)

挂在开始之前被调用,相关的render函数首次被调用(虚拟DOM),实例已完成以下的配置: 编译模板,把data里面的数据和模板生成html,完成了el和data 初始化,注意此时还没有挂载html到页面上。

4. mounted(挂载后)

挂载完成,也就是模板中的HTML 渲染到HTML页面 中,此时一般可以做一些ajax操作,mounted只会执行一次。

5. beforeUpdate(更新前)

在数据更新之前被调用,发生在虚拟DOM重新渲染和打补丁之前,可以在该钩子中进一步地更改状态,不会触发附加地重渲染过程

6. updated(更新后)

在由于数据更改导致的虚拟DOM重新渲染和打补丁时会调用,调用时,组件DOM已经更新,所以可以执行依赖于DOM的操作。在大多数情况下,应该避免在此期间更改状态,因为这可能会导致更新无限循环,该钩子在服务器端渲染期间不被调用

7. beforeDestroy(销毁前)

在实例销毁之前调用,实例仍然完全可用

  1. 这一步还可以用this来获取实例,
  2. 一般在这一步做一些重置的操作,比如清除掉组件中的定时器 和 监听的dom事件

8. destroyed(销毁后)

在实例销毁之后调用,调用后,所有的事件监听器会被移出,所有的子实例也会被销毁,该钩子在服务器端渲染期间不被调用。

9. 代码实现钩子函数

<template><div><h1>生命周期、钩子函数</h1><h1>{{num}}</h1><button @click="btn">增加</button>
<!--      <button @click="btn">减少</button>  0--><button @click="num+=1">增加</button></div>
</template><script>
export default {name: "test",data(){return{num:0}},methods:{btn(){if(this.num < 15){this.num += 1}else {alert('不能再加了')this.num += 0}}},beforeCreate() {alert('创建之前')},created() {alert('创建之后')},beforeMount() {alert('挂载之前')},mounted() {alert('挂载之后')this.num = 10},beforeUpdate() {alert('修改之前')},updated() {alert('修改之后')}}
</script><style scoped></style>

在这里插入图片描述

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

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

相关文章

Redis-数据类型-Geospatial(地理空间索引)

文章目录 1、查看redis是否启动2、通过客户端连接redis3、切换到db5数据库4、将地理位置信息&#xff08;经度和纬度&#xff09;添加到 Redis 的键&#xff08;key&#xff09;中4.1、添加大江商厦4.2、添加西部硅谷 5、升序返回有序集key&#xff0c;让分数一起和值返回的结果…

简约的服务器监控工具Ward

什么是 Ward &#xff1f; Ward 是一个简单简约的服务器监控工具。 Ward 支持自适应设计系统。此外&#xff0c;它还支持深色主题。它仅显示主要信息&#xff0c;如果您想查看漂亮的仪表板而不是查看一堆数字和图表&#xff0c;则可以使用它。 Ward 在所有流行的操作系统上都能…

nuxt框架常见配置选项(二)

nuxt.config.js 常见配置 module.exports {head: { title: Nuxt App, meta: [ { charset: utf-8 }, { name: viewport, content: widthdevice-width, initial-scale1 }, // 其他 meta 配置... ], link: [ { rel: icon, type: image/x-icon, href: /favicon.ico } //…

Redis缓存机制详解(数据淘汰策略、缓存击穿、缓存穿透、缓存雪崩)

Redis缓存机制详解 Redis 作为一个高效的内存数据库&#xff0c;常用于缓存系统。 其缓存机制有助于提高数据访问速度、减轻后端数据库压力。 由于 Redis 是基于内存的数据库&#xff0c;内存资源有限&#xff0c;因此需要有合理的数据淘汰策略以管理内存使用。 1. 内存数据淘…

解决chrome浏览器总是将对站点的http访问改为https的问题

问题&#xff1a;vue项目本地运行出来的地址是http开头的&#xff0c;但在chrome浏览器中无法访问&#xff0c;在Edge浏览器就可以&#xff0c;发现是chrome总是自动将http协议升级为https。 已试过的有效的方法&#xff1a; 一、无痕模式下访问 无痕模式下访问不会将http自…

Tkinter PyQt或PySide、Kivy 的区别

选择Python GUI框架时&#xff0c;最好的选择取决于你的具体需求、项目类型以及你对外观和用户体验的期望。这里是一些常用的Python GUI框架&#xff0c;以及它们的优势和劣势&#xff1a; 1. Tkinter 优势&#xff1a; 内置于Python标准库中&#xff0c;无需安装额外的包即可…

java基于ssm+jsp 超市进销存管理系统

1前台首页功能模块 宜佰丰超市进销存管理系统&#xff0c;在系统首页可以查看首页、商品信息、新闻资讯、留言反馈、我的、跳转到后台、购物车等内容&#xff0c;如图1所示。 图1前台首页功能界面图 用户注册&#xff0c;在用户注册页面可以填写用户名、密码、姓名、联系电话、…

代码随想录——跳跃游戏(Leecode55)

题目链接 贪心 class Solution {public boolean canJump(int[] nums) {int cover 0;if(nums.length 1){return true;}// 只有一个元素可以达到for(int i 0; i < cover; i){// 在cover内选择跳跃步数cover Math.max(i nums[i],cover);if(cover > nums.length - 1)…

数据库开发规范

一、引言 数据库开发规范是确保数据库系统稳定性、安全性、可维护性和性能的重要指导原则。本规范旨在明确数据库开发过程中的各项标准&#xff0c;包括命名规范、设计规范、编码规范、安全规范以及性能优化等方面&#xff0c;以指导开发人员和数据库管理员进行高效的数据库开…

出现 defineProps is a compiler macro and no longer needs to be imported. 解决方法

目录 1. 问题所示2. 原理分析3. 解决方法1. 问题所示 执行前端代码的时候,出现如下问题: [@vue/compiler-sfc] defineProps is a compiler macro and no longer needs to be imported.[@vue/compiler-sfc] defineEmits is a compiler macro and no longer needs to be impo…

【排序 队列】1585. 检查字符串是否可以通过排序子字符串得到另一个字符串

本文涉及知识点 排序 队列 LeetCode1585. 检查字符串是否可以通过排序子字符串得到另一个字符串 给你两个字符串 s 和 t &#xff0c;请你通过若干次以下操作将字符串 s 转化成字符串 t &#xff1a; 选择 s 中一个 非空 子字符串并将它包含的字符就地 升序 排序。 比方说&a…

Makefile中strip函数的用法

在Makefile中&#xff0c;strip 函数的作用是去除变量值两端的空白字符&#xff08;空格和制表符&#xff09;。它的基本语法如下&#xff1a; stripped : $(strip variable)其中&#xff0c;variable 是要去除空白字符的变量名或表达式。strip 函数通常用于确保变量的值不包含…

Scikit-learn中的Fit方法:机器学习模型的灵魂

Scikit-learn中的Fit方法&#xff1a;机器学习模型的灵魂 在机器学习的世界里&#xff0c;Scikit-learn&#xff08;简称sklearn&#xff09;是一个广受欢迎的Python库&#xff0c;以其简洁、高效而著称。而在这个库中&#xff0c;fit方法扮演了一个至关重要的角色。本文将深入…

LLM大语言模型-AI大模型全面介绍

简介&#xff1a; 大语言模型&#xff08;LLM&#xff09;是深度学习的产物&#xff0c;包含数十亿至数万亿参数&#xff0c;通过大规模数据训练&#xff0c;能处理多种自然语言任务。LLM基于Transformer架构&#xff0c;利用多头注意力机制处理长距离依赖&#xff0c;经过预训…

政策护航新能源:政策红利激发行业活力,助推绿色经济腾飞

随着全球气候变化问题日益严重&#xff0c;新能源行业的发展成为推动绿色经济腾飞的重要引擎。近年来&#xff0c;各国政府纷纷出台政策支持新能源产业&#xff0c;旨在激发行业活力&#xff0c;促进经济可持续发展。本文将从政策红利的角度&#xff0c;探讨新能源行业发展的现…

什么是CMSIS || 标准库与HAL库

一&#xff0c;ARM&#xff08;Cortex Microcontroller Software Interface Standard&#xff09; ARM Cortex™ 微控制器软件接口标准&#xff08;Cortex Microcontroller Software Interface Standard&#xff09;是 CortexM 处理器系列的与供应商无关的硬件抽象层。…

docker的安装配置及使用

一.Docker的由来 Docker 最初是 dotCloud 公司创始人Solomon Hykes 在法国期间发起的一个公司内部项目。 2010年的专门做PAAS平台&#xff0c;但是到了2013年的时候&#xff0c;像亚马逊&#xff0c;微软&#xff0c;Google都开始做PAAS平台。 到了2013年&#xff0c;公司资金链…

空调器的铜管

1)、 全新开发的空调器&#xff0c;在钣金、塑料件结构方案设计的同时&#xff0c;进行配管结构设计,充分考虑整体空间的合理分配&#xff0c;以避免配管设计在其它结构方案确定之后&#xff0c;只局限在有限的空间内进行。 2)、 制冷系统以外的结构件已定型的产品&#xff0c…

仿真模拟--静态浮动路由

目录 静态路由 浮动路由 静态路由 浮动路由

Verilog描述一个带有异步置位和异步清零的D触发器

1 带有异步置位和异步清零的D触发器的真值表&#xff1a; 2 Verilog代码描述 module DFF_SR(CLK, D, Rd, Sd, Q, QN);input CLK, D, Rd, Sd;output Q, QN;reg Q_DFF;always (posedge CLKor negedge Rd or negedge Sd)beginif(!Rd)Q_DFF < 1b0;else if(!Sd)Q_DFF < 1b1;e…