【Vue3】2-11 : 生命周期钩子函数及原理分析

本书目录:点击进入

一、组件生命周期概述

1.1 官方生命周期

1.2 钩子函数(回调函数)

▶  生命周期可划分为三个部分(- >表示执行循序):

二、实战:测试生命周期流程

>  代码 

>  效果


一、组件生命周期概述

每个组件在被创建时都要经过一系列的初始化过程——例如,

  • 设置数据监听

  • 编译模板

  • 将实例挂载到 DOM 并在数据变化时更新 DOM 等

同时在这个过程中也会运行一些叫做生命周期钩子的函数(回调函数这给了用户在不同阶段添加自己的代码的机会

生命周期钩子函数就是回调函数,在Vue的某个时机去调用对应的回调函数

1.1 官方生命周期

  • 官方提供的 生命周期图示

1.2 钩子函数(回调函数)

▶  生命周期可划分为三个部分(- >表示执行循序):

  1. 初始阶段:beforeCreate -> created -> beforeMount -> mounted

  2. 更新阶段beforeUpdate -> updated

  3. 销毁阶段beforeUnmout -> unmounted

注:一般在,created,mounted 中都可以发送数据请求,但是,大部分时候,会在created发送请求。因为这样可以更短的时间去响应数据。

二、实战:测试生命周期流程

>  代码 

<div id="app">{{ message }}
</div>
<script>/* function foo(cb){//指定的时机去调用回调函数cb();}foo(function(){// 编写复杂的逻辑1});foo(function(){// 编写复杂的逻辑2}); */let vueApp = Vue.createApp({data() {return {message: 'hello world'}},beforeCreate() {console.log("Stage1:开始-初始化实例");console.log("beforeCreate-vm:" + this.message);console.log("beforeCreate-dom:" + app.innerHTML);},// 【生命周期】触响应式数据准备好后触发created() {console.log("created-vm:" + this.message);   // ✔console.log("created-dom:" + app.innerHTML);setTimeout(() => {console.log("Stage2-1:开始-【created阶段】更新数据 - message = hi vue2");this.message = 'hi vue2';}, 2000)},beforeMount() {console.log("beforeMount-vm:" + this.message);   // ✔console.log("beforeMount-dom:" + app.innerHTML);},// 【生命周期】等DOM加载完毕后会触mounted() {console.log("mounted-vm:" + this.message);   // ✔console.log("mounted-dom:" + app.innerHTML);  // ✔setTimeout(() => {console.log("Stage2-2:开始-【mounted阶段】更新数据 - message = hi vue3");this.message = 'hi vue3';}, 4000)},beforeUpdate() {   // 【生命周期】更新数据时会触console.log("beforeUpdate-vm:" + this.message);console.log("beforeUpdate-dom:" + app.innerHTML);},updated() {console.log("updated-vm:" + this.message);console.log("updated-dom:" + app.innerHTML);},beforeUnmount() {// 【生命周期】卸载组件时会触console.log("beforeUnmount-vm:" + this.message);console.log("beforeUnmount-dom:" + app.innerHTML);},unmounted() {console.log("unmounted-vm:" + this.message);console.log("unmounted-dom:" + app.innerHTML);   // ''}})vueApp.mount('#app');setTimeout(() => {//vm.message = 'hi vue';console.log("Stage3:开始-卸载组件");vueApp.unmount();}, 6000)</script>

>  效果

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

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

相关文章

ZZULIOJ 1111: 多个整数的逆序输出(函数专题)

题目描述 输入n和n个整数&#xff0c;以与输入顺序相反的顺序输出这n个整数。要求不使用数组&#xff0c;而使用递归函数实现。 递归函数实现过程如下&#xff1a; void inverse(int n) { 读入一个整数&#xff0c;存入num; if(n >1) { 将后面的n-1个数逆…

代码随想录算法训练营第二十一天|450.删除二叉搜索树中的节点

450.删除二叉搜索树中的节点 private void swapValue(TreeNode a, TreeNode b) {int t a.val;a.val b.val;b.val t; }public TreeNode deleteNode(TreeNode root, int key) {if (root null) {return null;}if (key < root.val) {root.left deleteNode(root.left, key)…

在CMake中自定义宏 add_definitions(-DDEBUG)

hehedalinux:~/Linux/loveDBTeacher-v6$ tree . ├── CMakeLists.txt └── test.c0 directories, 2 files hehedalinux:~/Linux/loveDBTeacher-v6$ test.c #include <stdio.h> #define NUMBER 3int main() {int a 10; #ifdef DEBUGprintf("我是一个程序猿,我…

QT获取程序编译时间与当前时间的区别及应用场景

一.获取编译时间与当前时间的区别 1.编译日期时间&#xff1a;这个信息通常用于标识某个源代码文件或整个应用程序的编译时间&#xff0c;程序一旦编译出来不会再改变&#xff0c;通常用于记录或跟踪代码的版本和更改历史。 2.运行当前日期时间&#xff1a;这是指程序在运行时…

UG装配-多运动组合动画与自动创建装配路径

当圆盘在装配过程中既有旋转运动&#xff0c;又有直线运动的时候&#xff0c;我们需要用到序列中的抽取路径 抽取路径命令在如下位置&#xff0c;需要注意的是&#xff0c;使用抽取路径前&#xff0c;如果有其他零件与所取对象配合&#xff0c;需要先物体脱离或使用拆卸对其脱离…

文件系统详解以及修复

虚拟磁盘分为: kvm : vda(虚拟化磁盘) openstack底层虚拟化是kvm 现在的红帽底层也是用的kvm(因为被红帽收购了) xen : xvda cloustack(被openstack淘汰了)底层虚拟化是xen 已经被kvm淘汰 块设备 IDE设备 : /dev/hda,/dev/hdb SATA/SAS/USB设备 : …

File chooser dialog can only be shown with a user activation.

使用vue开发时&#xff0c;通过ref通过“this.refs.[name].$el.click()”触发按钮时提示“File chooser dialog can only be shown with a user activation.”&#xff0c;按钮不能触发&#xff0c;网上解决办法是“dispatchEvent(new MouseEvent(click))”代替“$el.click()”…

[NAND Flash 6.1] 怎么看时序图 | 从时序理解嵌入式 NAND Read 源码实现

依公知及经验整理,原创保护,禁止转载。 专栏 《深入理解NAND Flash》 <<<< 返回总目录 <<<< 前言 每次看到NAND 说明书都脑袋大, 时序图看了脑壳就疼。时序图怎么看呢? 本文就和大家一起学习下。 前置知识基础 在读本文之前,你需要至少了解 你手上…

【STM32F103】继电器的用法

前言 因为最近用到了继电器&#xff0c;所以稍微记录一下继电器的用法。 如果我们需要点亮一个LED灯的时候&#xff0c;我们只需要用单片机的GPIO口去输出高低电平驱动就行。 但是我们需要通过单片机去控制大电压器件的开关的时候&#xff0c;我们就不能简简单单地用一个GPI…

linux Tcp总结

Tcp连接建立时的影响因素 在Client发出SYN后&#xff0c;如果过了1秒 &#xff0c;还没有收到Server的响应&#xff0c;那么就会进行第一次重传&#xff1b;如果经过2s的时间还没有收到Server的响应&#xff0c;就会进行第二次重传&#xff1b;一直重传tcp_syn_retries次。 对…

策略模式-实践

俗话说&#xff1a;条条大路通罗马。在很多情况下&#xff0c;实现某个目标的途径不止一条&#xff0c;例如我们在外出 旅游时可以选择多种不同的出行方式&#xff0c;如骑自行车、坐汽车、坐火车或者坐飞机&#xff0c;可根据实 际情况&#xff08;目的地、旅游预算、旅游时间…

星河璀璨:飞桨星河文心SDK与Gurdance珠联璧合让大模型更像人!

星河璀璨&#xff1a;飞桨星河文心SDK与Gurdance珠联璧合让大模型更像人&#xff01; 本项目效果惊艳&#xff0c;可以在AIStudio星河社区一键运行 只需要在cpu基础版下运行&#xff0c;妈妈再也不怕我的算力不够了&#xff01; 1、引言 2023年8月22日&#xff0c;百度董事…

3.14.1 函数对象 Page139~141

28行&#xff0c;doggie是一个类型为Dog的对象&#xff0c;而“()”是它的一个成员函数&#xff0c;doggie()实际上是doggie.operator() "operator()"既然是函数&#xff0c;那就可以有参数&#xff0c;也可以有返回值 运行结果为&#xff1a;

分布式系统中常用锁的概念及应用场景

在分布式系统中&#xff0c;存在多种锁用于实现并发控制和数据一致性。以下是一些常见的分布式锁及其概念及应用场景&#xff1a; 互斥锁&#xff08;Mutex Lock&#xff09;&#xff1a; 概念&#xff1a; 互斥锁是最基本的分布式锁&#xff0c;用于确保在同一时间只有一个节点…

新微信公众号没有留言功能, 你们怎么破?

为什么公众号没有留言功能&#xff1f;从2018年2月开始&#xff0c;新注册的微信公众号取消了留言功能&#xff0c;原因是为了规避一些营销号通过虚假留言骗取读者信任。不过大部分公众号运营者对TX此举感到失望&#xff0c;一方面大片的留言就像店前排队的顾客&#xff0c;能体…

Codeforces Round 880 (Div. 2)(VP-13,寒假加训)

VP时间 A. 计数器 比较c[i]与c[i1] 1.ac B. 数学&#xff1f; 好贪 让&#xff08;n-1&#xff09;个人都拿g/2(向上取整)-1&#xff0c;这样每个人都拿不到 或者全部人都拿g/2(向上取整)-1,省的是g/2-1,综合一下还是ans 最后一个人拿完全部 1.wa2 2.wa2 3,.wa2 …

PLC、工业设备如何远程访问?贝锐蒲公英云智慧组网实现数据互通

在工业4.0时代&#xff0c;工业数字化的核心在于数据的互联互通&#xff0c;而在整个工业数字化、智能化的过程中&#xff0c;往往面临数据采集困难、设备运行情况难以知晓、部署管理难度大、后期维护成本高等问题。 显然&#xff0c;PLC设备在整个工业数字化进程中扮演的角色…

Invalid GeoJSON data provided to function st_geomfromgeojson

场景: 在往mysql表中字段是GEOMETRY类型存数据的时候遇到了了标题的问题 SQL如下: SELECT ST_GeomFromGeoJSON({"type":"MultiPolygon", "coordinates": [[[[113.404943, 23.172859], [113.40675, 23.172847], [113.406783, 23.171849], [113.40…

freertos任务管理器,任务监控

freertos提供了类似于windows的任务管理器功能&#xff0c;具体地如下&#xff1a; 1、configUSE_TRACE_FACILITY 和 configUSE_TRACE_FACILITY使能置1 2、调用vTaskList&#xff0c;如下&#xff1a; if(idleTaskCounter%84){char printlist[2048];vTaskList(printlist);Prin…

ssm基于Java的药店药品信息管理系统的设计与实现论文

摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理&#xff0c;然而&#xff0c;随着近些年信息技术的迅猛发展&#xff0c;让许多比较老套的信息管理模式进行了更新迭代&#xff0c;药品信息因为其管理内容繁杂&#xff0c;管理数量繁多导致手工进行处理不能满足广大…