当前位置: 首页 > news >正文

生命周期总结(uni-app、vue2、vue3生命周期讲解)

一、vue2生命周期

Vue2 的生命周期钩子函数分为 4 个阶段:创建挂载更新销毁

1. 创建阶段

  • beforeCreate:实例初始化之后,数据观测和事件配置之前。

  • created:实例创建完成,数据观测和事件配置已完成,但 DOM 未生成。

2. 挂载阶段

  • beforeMount:模板编译完成,但未挂载到 DOM。

  • mounted:实例挂载到 DOM 后调用,DOM 已生成。

3. 更新阶段

  • beforeUpdate:数据更新时调用,DOM 未重新渲染。

  • updated:数据更新后,DOM 重新渲染完成。

4. 销毁阶段

  • beforeDestroy:实例销毁之前调用,此时实例仍可用。

  • destroyed:实例销毁后调用,所有事件监听器和子实例被移除。

export default {beforeMount() {console.log('beforeMount: 模板编译完成,DOM 未挂载');},mounted() {console.log('mounted: DOM 已挂载');}
}

二、vue3生命周期

Vue3 的生命周期与 Vue2 类似,但有一些变化:

  • Vue3 使用 Composition API,生命周期钩子函数可以通过 setup 函数访问。

  • 部分钩子函数名称变化,并新增了一些钩子。

1. 创建阶段

  • setup:替代 beforeCreate 和 created,在组件初始化时调用。

  • onBeforeMount:替代 beforeMount

  • onMounted:替代 mounted

2. 更新阶段

  • onBeforeUpdate:替代 beforeUpdate

  • onUpdated:替代 updated

3. 销毁阶段

  • onBeforeUnmount:替代 beforeDestroy

  • onUnmounted:替代 destroyed

4. 新增钩子

  • onActivated:被 <keep-alive> 缓存的组件激活时调用。

  • onDeactivated:被 <keep-alive> 缓存的组件停用时调用。

  • onErrorCaptured:捕获子孙组件的错误时调用。

import { onBeforeMount, onMounted } from 'vue';export default {setup() {console.log('setup: 组件初始化');onBeforeMount(() => {console.log('onBeforeMount: DOM 未挂载');});onMounted(() => {console.log('onMounted: DOM 已挂载');});}
}

三、vue2和vue3生命周期的区别

生命周期Vue2Vue3说明
创建阶段beforeCreatesetupVue3 使用 setup 替代 beforeCreate 和 created
挂载阶段beforeMountonBeforeMount钩子函数名称变化
挂载完成mountedonMounted钩子函数名称变化
更新阶段beforeUpdateonBeforeUpdate钩子函数名称变化
更新完成updatedonUpdated钩子函数名称变化
销毁阶段beforeDestroyonBeforeUnmount钩子函数名称变化
销毁完成destroyedonUnmounted钩子函数名称变化
缓存组件激活onActivatedVue3 新增
缓存组件停用onDeactivatedVue3 新增
错误捕获onErrorCapturedVue3 新增

四、uni-app生命周期

UniApp 的生命周期分为 应用生命周期页面生命周期 和 组件生命周期

官网链接:页面 | uni-app官网

1、应用的生命周期(重点是前面几个)

  • onLaunch:应用初始化完成时触发(全局只触发一次)。

  • onShow:应用启动或从后台进入前台时触发。

  • onHide:应用从前台进入后台时触发。

  • onError:应用发生脚本错误时触发。

  • onUniNViewMessage:监听 nvue 页面发送的消息。

  • onUnhandledRejection:监听未处理的 Promise 拒绝事件。

  • onPageNotFound:页面不存在时触发。

  • onThemeChange:监听系统主题变化。

// 在 App.vue 中定义应用生命周期钩子
export default {onLaunch(options) {console.log('App Launch', options);},onShow(options) {console.log('App Show', options);},onHide() {console.log('App Hide');},onError(err) {console.error('App Error', err);}
}

2、页面的生命周期(前五个是重点)

页面生命周期是指单个页面的加载、显示、隐藏和卸载的过程。Uniapp 提供了以下页面生命周期钩子函数:

  • onLoad: 页面加载时触发,一个页面只会调用一次,参数为页面传递的参数。适合在页面加载时获取参数并初始化数据。

  • onShow: 页面显示/切入前台时触发。刷新也会触发。

  • onReady: 页面初次渲染完成时触发,一个页面只会调用一次。

  • onHide: 页面隐藏/切入后台时触发。

  • onUnload: 页面卸载时触发。

  • onPullDownRefresh: 页面下拉刷新时触发。

  • onReachBottom: 页面上拉触底时触发。

  • onPageScroll: 页面滚动时触发。

  • onResize: 页面尺寸改变时触发(如屏幕旋转)。

  • onTabItemTap: 点击 tab 时触发,参数为当前 tab 的信息。

// 在页面中定义页面生命周期钩子
export default {onLoad(options) {console.log('Page Load', options);},onShow() {console.log('Page Show');},onReady() {console.log('Page Ready');},onHide() {console.log('Page Hide');},onUnload() {console.log('Page Unload');}
}

注意:onLoad和onReady的区别

onload

  • 触发时机较晚,需要等待页面及其所有元素(包括图片、视频等)完全加载完毕后才会触发。
  • 适用于需要在页面所有资源都加载完毕后才执行的操作,如计算页面元素的大小、位置等属性。
  • 在传统的网页开发中,onload事件经常被用来确保页面资源已经加载完毕后再执行某些操作。
  • 使用场景:如果你需要确保页面上的所有元素都已经加载完毕再发起请求,比如获取某些依赖于页面内容的动态数据,那么onload是一个合适的选择。这样可以避免因为页面元素还未加载完毕而导致的请求错误或数据不准确。

onready

  • 触发时机较早,当页面DOM结构绘制完毕后就会触发。
  • 适用于需要在页面DOM结构就绪后立即执行的操作,如初始化UI组件、绑定事件监听器等。
  • 在一些现代前端框架(如Vue、React等)中,通常会有类似的生命周期钩子(如mounted)来替代传统的onready事件。
  • 使用场景:如果你需要在页面DOM结构就绪后立即发起请求,而不必等待所有资源都加载完毕,那么onready更为合适。这通常用于初始化页面上的某些功能或组件,这些功能或组件可能不依赖于页面上的所有资源。

3、组件的生命周期

UniApp 的组件生命周期与 Vue2 或 Vue3 的生命周期一致,如果使用的是vue2则使用vue2的生命周期,使用的vue3,则使用vue3生命周期。

  • Vue2beforeCreatecreatedbeforeMountmountedbeforeUpdateupdatedbeforeDestroydestroyed

  • Vue3setuponBeforeMountonMountedonBeforeUpdateonUpdatedonBeforeUnmountonUnmounted

4、为什么应用和页面生命周期都包含 onShow 和 onHide

  • 应用生命周期 的 onShow 和 onHide 是针对整个应用的,关注的是应用的整体状态(如启动、切换到前台/后台)。

  • 页面生命周期 的 onShow 和 onHide 是针对单个页面的,关注的是页面的显示和隐藏状态(如页面跳转、返回)。

5、两者生命周期的区别

特性应用生命周期 (App.vue)页面生命周期 (页面 .vue)
作用范围整个应用单个页面
触发时机应用启动、切换到前台/后台页面显示、隐藏
使用场景全局逻辑(如登录状态检查)页面逻辑(如刷新数据)

五、总结

  • Vue2 和 Vue3 的生命周期基本一致,但 Vue3 引入了 Composition API,部分钩子函数名称变化,并新增了一些钩子。

  • UniApp 的生命周期分为应用、页面和组件三部分,应用和页面的生命周期是 UniApp 特有的,组件的生命周期与 Vue 一致。

  • 在实际开发中,根据框架版本(Vue2/Vue3)和平台(UniApp)选择合适的生命周期钩子函数。

  • 发起请求的时机

    • 页面加载时:onLoad

    • 页面显示时:onShow

    • 下拉刷新时:onPullDownRefresh

    • 上拉加载更多时:onReachBottom

    • 组件创建时:created 或 mounted

相关文章:

生命周期总结(uni-app、vue2、vue3生命周期讲解)

一、vue2生命周期 Vue2 的生命周期钩子函数分为 4 个阶段&#xff1a;创建、挂载、更新、销毁。 1. 创建阶段 beforeCreate&#xff1a;实例初始化之后&#xff0c;数据观测和事件配置之前。 created&#xff1a;实例创建完成&#xff0c;数据观测和事件配置已完成&#xff0c…...

计算机数据库三级刷题总结(博主89分已过,总结的内容分享)

计算机数据库三级刷题总结&#xff08;博主89分已过&#xff0c;总结的内容分享&#xff09; 文章目录 计算机数据库三级刷题总结&#xff08;博主89分已过&#xff0c;总结的内容分享&#xff09;一、 数据库设计阶段二、事务相关三、数据库设计顺序四、数据库三级模式与二层映…...

mfc140u.dll是什么?当程序遭遇mfc140u.dll问题:快速恢复正常的秘诀

在使用Windows操作系统运行某些软件时&#xff0c;不少用户会遇到令人头疼的mfc140u.dll文件丢失错误。mfc140u.dll这个错误一旦出现&#xff0c;往往导致相关程序无法正常启动或运行&#xff0c;给用户带来诸多不便。这天的这篇文章将给大家分析mfc140u.dll是什么&#xff1f;…...

AI是否能真正理解人类情感?从语音助手到情感机器人

引言&#xff1a;AI与情感的交集 在过去的几十年里&#xff0c;人工智能&#xff08;AI&#xff09;的发展速度令人惊叹&#xff0c;从简单的语音识别到如今的深度学习和情感计算&#xff0c;AI已经深入到我们生活的方方面面。尤其是在语音助手和情感机器人领域&#xff0c;AI不…...

3.3.2 Proteus第一个仿真图

文章目录 文章介绍0 效果图1 新建“点灯”项目2 添加元器件3 元器件布局接线4 补充 文章介绍 本文介绍&#xff1a;使用Proteus仿真软件画第一个仿真图 0 效果图 1 新建“点灯”项目 修改项目名称和路径&#xff0c;之后一直点“下一步”直到完成 2 添加元器件 点击元…...

JetBrains学生申请

目录 JetBrains学生免费授权申请 IDEA安装与使用 第一个JAVA代码 1.利用txt文件和cmd命令运行 2.使用IDEA新建项目 JetBrains学生免费授权申请 本教程采用学生校园邮箱申请&#xff0c;所以要先去自己的学校申请校园邮箱。 进入JetBrains官网 点击立即申请&#xff0c;然…...

深入探索WebGL:解锁网页3D图形的无限可能

深入探索WebGL&#xff1a;解锁网页3D图形的无限可能 引言 。WebGL&#xff0c;作为这一变革中的重要技术&#xff0c;正以其强大的功能和广泛的应用前景&#xff0c;吸引着越来越多的开发者和设计师的关注。本文将深入剖析WebGL的核心原理、关键技术、实践应用&#xff0c;并…...

SQL进阶技巧:上课时长计算

目录 0 问题描述 1 数据准备 2 问题解决 核心难点 时间区间标记与分组 区间合并与时长计算...

“沂路畅通”便利服务平台:赋能同城物流,构建高效畅通的货运生态

“沂路畅通”便利服务平台&#xff1a;赋能同城物流&#xff0c;构建高效畅通的货运生态 随着城市化进程的加速&#xff0c;同城物流需求迅速增长&#xff0c;然而货运过程中仍然存在信息不对称、资源浪费、司机服务体验差等痛点。临沂呆马区块链网络科技有限公司&#xff08;…...

文件上传靶场(1--9关)

实验环境&#xff1a; 1&#xff0c;upload的靶场环境可以去GitHub上自行查找 2&#xff0c;打开小皮面板的nginx和数据库 3&#xff0c;将文件上传的靶场部署到本地&#xff1a; 放到小皮的phpstduy_pro的www下面 小提示&#xff1a; 另外如果你用的是php7的版本建议将版…...

嵌入式 ARM Linux 系统构成(1):Bootloader层

目录 一、Bootloader 概述 1.1 核心作用 1.2 典型启动流程 二、ARM Bootloader 架构详解 2.1 多阶段启动设计 2.2 关键代码流程 2.3. Bootloader的加载过程 2.4. Bootloader的加载方式 2.5. Bootloader 的移植 三、常见的Bootloader介绍 3.1. U-Boot 3.2. vivi …...

ArcGIS Pro 基于基站数据生成基站扇区地图

在当今数字化的时代&#xff0c;地理信息系统&#xff08;GIS&#xff09;在各个领域都发挥着至关重要的作用。 ArcGIS Pro作为一款功能强大的GIS软件&#xff0c;为用户提供了丰富的工具和功能&#xff0c;使得数据处理、地图制作和空间分析变得更加高效和便捷。 本文将为您…...

GaussianCity:实时生成城市级数字孪生基底的技术突破

在空间智能领域,如何高效、大规模地生成高质量的3D城市模型一直是一个重大挑战。传统方法如NeRF和3D高斯溅射技术(3D-GS)在效率和规模上存在显著瓶颈。GaussianCity通过创新性的技术方案,成功突破了这些限制,为城市级数字孪生的构建提供了全新路径。 一、核心创新:突破传…...

【个人学习总结】反悔贪心:反悔堆+反悔自动机

参考&#xff1a;【学习笔记】反悔贪心 - RioTian 什么是反悔贪心&#xff1f; 反悔贪心&#xff0c;就是可以回溯的贪心&#xff0c;一般题目我们能使用正常贪心的情况是很少的&#xff0c;因为我们只考虑了局部最优解&#xff0c;我们不能保证局部最优解是最后的最优解&…...

通往 AI 之路:Python 机器学习入门-线性代数

2.1 线性代数&#xff08;机器学习的核心&#xff09; 线性代数是机器学习的基础之一&#xff0c;许多核心算法都依赖矩阵运算。本章将介绍线性代数中的基本概念&#xff0c;包括标量、向量、矩阵、矩阵运算、特征值与特征向量&#xff0c;以及奇异值分解&#xff08;SVD&…...

迷你世界脚本UI五子棋小游戏

wzq_jm "7477124677881080183-22855"--界面id wzq_jmjxh "7477124677881080183-22855_"--界面加下划线 wzq_tc "7477124677881080183-22855_262"--退出按钮id wzq_hdlt1 "7477124677881080183-22855_267"--互动聊天按钮 快点吧&a…...

阿里万相,正式开源

大家好&#xff0c;我是小悟。 阿里万相正式开源啦。这就像是AI界突然开启了一扇通往宝藏的大门&#xff0c;而且还是免费向所有人敞开的那种。 你想想看&#xff0c;在这个科技飞速发展的时代&#xff0c;AI就像是拥有神奇魔法的魔法师&#xff0c;不断地给我们带来各种意想…...

C# 数据转换

1. 文本框读取byte&#xff0c;ushort格式数据 byte addr; if (byte.TryParse(textBoxAddr.Text, out addr) true) {}2. 字节数组 (byte[]) 转换为 ASCII 字符串 byte[] bytes { 72, 101, 108, 108, 111 }; // "Hello" 的 ASCII 码 string s0 Encoding.ASCII.Ge…...

学习第十一天-树

一、树的基础概念 1. 定义 树是一种非线性数据结构&#xff0c;由 n 个有限节点组成层次关系集合。特点&#xff1a; 有且仅有一个根节点其余节点分为若干互不相交的子树节点间通过父子关系连接 2. 关键术语 术语定义节点包含数据和子节点引用的单元根节点树的起始节点&#…...

网络服务之SSH协议

一.SSH基础 1.1 什么是ssh SSH&#xff08;Secure Shell&#xff09;协议是一种用于字符界面远程登录和数据加密传输的协议。 1.2 ssh优点 优点&#xff1a; 数据传输是加密的&#xff0c;可以防止信息泄漏 数据传输是压缩的&#xff0c;可以提高传输速度 注意&#xff…...

蓝桥杯 之 前缀和与查分

文章目录 题目求和棋盘挖矿 前缀和有利于快速求解 区间的和、异或值 、乘积等情况差分是前缀和的反操作 前缀和 一维前缀和&#xff1a; # 原始的数组num,下标从1到n n len(num) pre [0]*(n1) for i in range(n):pre[i1] pre[i] num[i] # 如果需要求解num[l] 到num[r] 的区…...

GB28181开发--ZLMediaKit‌+WVP+Jessibuca‌

一、核心组件功能 1‌、ZLMediaKit‌ 定位‌:基于 C++11 的高性能流媒体服务框架,支持 RTSP/RTMP/HLS/HTTP-FLV 等协议互转,具备低延迟(最低 100ms)、高并发(单机 10W 级连接)特性,适用于商用级流媒体服务器部署‌。 ‌特性‌:跨平台(Linux/Windows/ARM 等)、支持 …...

Ubuntu20.04 在离线机器上安装 NVIDIA Container Toolkit

步骤 1.下载4个安装包 Index of /nvidia-docker/libnvidia-container/stable/ nvidia-container-toolkit-base_1.13.5-1_amd64.deb libnvidia-container1_1.13.5-1_amd64.deb libnvidia-container-tools_1.13.5-1_amd64.deb nvidia-container-toolkit_1.13.5-1_amd64.deb 步…...

如何快速上手RabbitMQ 笔记250304

如何快速上手RabbitMQ 要快速上手 RabbitMQ&#xff0c;可以按照以下步骤进行&#xff0c;从安装到基本使用逐步掌握核心概念和操作&#xff1a; 1. 理解核心概念 Producer&#xff08;生产者&#xff09;&#xff1a;发送消息的程序。Consumer&#xff08;消费者&#xff09…...

无人机端部署 AI 模型,实现实时数据处理和决策

在无人机端部署 AI 模型&#xff0c;实现实时数据处理和决策&#xff0c;是提升无人机智能化水平的关键技术之一。通过将 AI 模型部署到无人机上&#xff0c;可以实现实时目标检测、路径规划、避障等功能。以下是实现这一目标的详细方案和代码示例。 一、实现方案 1. 硬件选择…...

CentOS 7中安装Dify

Dify 是一个开源的 LLM 应用开发平台。其直观的界面结合了 AI 工作流、RAG 管道、Agent、模型管理、可观测性功能等&#xff0c;让您可以快速从原型到生产。尤其是我们本地部署DeepSeek等大模型时&#xff0c;会需要用到Dify来帮我们快捷的开发和应用。 大家可以参考学习它的中…...

CoDrivingLLM

CoDrivingLLM 思路 1.输入和输出 输入 算法的输入包括车辆当前时刻的状态 S t S_t St​ &#xff0c;这个状态包含了车辆的位置、速度、行驶方向等信息&#xff1b;以及参与协同驾驶的联网自动驾驶汽车列表C&#xff0c;用于确定需要进行决策的车辆集合。 输出 输出为车辆…...

Centos7升级openssl和openssh最新版

1、事前准备 下载openssl3.4.1和openssh9.9p2压缩包上传到服务器 https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable// Release OpenSSL 3.4.1 openssl/openssl GitHub 2、查看centos7、ssh以及openssl的版本信息 # 查看CentOS系统版本信息 cat /etc/redhat-release …...

相控阵扫盲

下图展示天线增益 在仰角为0度的情况下随着方位角的变化而变化。需要注意到的是在天线视轴方向上的高增益主瓣上还有几个低增益旁瓣 阵列因子乘以新的阵元方向图会形成指向性更强的波速...

nginx 配置 301跳转

HTTP 跳转到 HTTPS 将所有 HTTP 请求&#xff08;80 端口&#xff09;跳转到 HTTPS&#xff08;443 端口&#xff09;&#xff1a; server {listen 80;server_name example.com;# 跳转到 HTTPSreturn 301 https://$host$request_uri; }server {listen 443 ssl;server_name exa…...