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

uni-app的生命周期

目录

  • 一、整体的架构概述
  • 二、核心生命周期
    • 1、应用生命周期(App.vue)
    • 2、页面生命周期(页面的组件)
    • 3、组件生命周期(与vue一致)
  • 三、高频面试问题解答
    • 1. 应用生命周期 vs 页面生命周期
    • 2. onReady 和 mounted 的区别
    • 3. 如何优化生命周期中的性能?
  • 四、结合项目的最佳实践

在uni-app中的也存在着生命周期,vue和react的生命周期一样。理解uni-app的生命周期,可以帮助我们更好的书写代码,以及优化性能。

一、整体的架构概述

uni-app的生命周期主要分为应用级、页面级、组件级三个层次,分别对应不同的使用场景:

  • 应用生命周期:控制整个应用的启动,前后台的切换以及销毁、
  • 页面生命周期:管理单页页面的加载、渲染和卸载
  • 组件生命周期:处理组件的创建、挂载和销毁(与vue的组件生命周期基本一样)

二、核心生命周期

1、应用生命周期(App.vue)

  • onlaunch
    • 触发时机:应用初始化是执行(全局就一次)
    • 用途:初始化全局数据(如用户信息、配置参数)、检查登录状态
    • 示例
onLaunch() {// 检查本地存储的 tokenconst token = uni.getStorageSync('token');if (!token) uni.navigateTo({ url: '/pages/login' });
}- 
  • onshow
    • 触发时机:应用从前台切换到后台时触发
    • 用途:保存未提交的数据、暂停动画或网络请求

2、页面生命周期(页面的组件)

  • onLoad
    • 触发时机:页面加载时触发,接受路径参数(如id=1)
    • 用途 : 初始化也米娜数据,根据参数请求接口
    • 示例
 onLoad(options) {this.articleId = options.id;this.fetchArticleData(options.id); // 根据 ID 获取文章详情
}
  • onReady

    • 触发时机:页面初次渲染完成时触发(类似Vue的mounted)
    • 用途 : 操作Dom(如获取节点信息)、初始化第三方插件
  • onShow

    • 触发时机:页面显示时触发(每次打开页面都会执行)
    • 用途 :刷新也米娜数据(如列表页的最新数据)。
  • onHide

    • 触发时机:页面隐藏时触发(如跳转到其他页面)
    • 用途 : 暂停定时器、取消未完成的请求
  • onUnload

    • 触发时机:页面销毁时触发(如调佣uni.navigateBack())
    • 用途 : 释放资源(如清除缓存、解绑事件)。

3、组件生命周期(与vue一致)

  • created:实例初始化后触发,数据观测和 event/watcher 事件配置完成。
  • mounted:模板渲染完成后触发,可访问 DOM 元素。
  • updated:数据更新导致 DOM 重新渲染后触发。
  • destroyed:组件销毁前触发,可执行清理工作。

三、高频面试问题解答

1. 应用生命周期 vs 页面生命周期

  • 应用生命周期:全局唯一,控制整个应用的状态。
  • 页面生命周期:每个页面独立存在,管理页面的显示与隐藏。
  • 场景举例
    用户登录状态检查应放在 App.vue 的 onLaunch 中。
    页面数据刷新应放在 onShow 中(如返回列表页时刷新数据)。

2. onReady 和 mounted 的区别

  • onReady:uni-app 特有的页面生命周期,表示页面初次渲染完成。
  • mounted:Vue 组件的生命周期,表示组件挂载完成。
    注意:在 uni-app 中,建议优先使用 onReady 操作页面 DOM。

3. 如何优化生命周期中的性能?

  • 避免在 onShow 中频繁请求数据:可通过缓存或时间戳判断是否需要刷新。
  • 及时清理资源:在 onUnload 中取消定时器、监听事件和未完成的请求。
  • 使用全局状态管理:复杂数据在应用生命周期初始化,避免重复获取。

四、结合项目的最佳实践

场景示例:电商 APP 的商品详情页

  • onLoad:获取商品ID,请求商品详情数据
  • onReady:初始化轮播图插件或瀑布流布局。
  • onShow:检查用户是否登录(若未登录,跳转到登录页)。
  • onHide:暂停商品评论的实时刷新。
  • onUnload:清除商品图片缓存,避免占用过多内存
http://www.lqws.cn/news/582175.html

相关文章:

  • 云原生微服务架构搭建与部署全流程及样例
  • Spring Cloud Bus 和 Spring Cloud Stream
  • C语言main函数的原理:程序入口的奥秘
  • SpringCloud微服务 Eureka服务注册与发现
  • 从DeepMimic到带物理约束的MaskMimic——人形机器人全身运控的通用控制器:自此打通人类-动画-人形的训练路径
  • week1
  • WPF学习笔记(14)列表视图控件ListView与数据模板
  • demo01:基于 SpringMVC 的用户管理系统
  • Linux习题
  • 设计模式-观察者模式(发布订阅模式)
  • Redis 安装使用教程
  • RWKV-8 系列之 DeepEmbedAttention:精简 KV 缓存,尤其适合混合模型(RWKV-7s)
  • 使用pyflink进行kafka实时数据消费
  • 在 Vue3 + Element Plus 中实现 el-table 拖拽排序功能
  • mysql 小版本升级实战分享
  • 基于librdkafka开发的C++客户端,生产者生产发送数据失败问题处理
  • 百度文心大模型4.5系列正式开源,开源会给百度带来什么?
  • 网络安全2023—新安全新发展
  • MySQL (四):连接查询和索引
  • macos 安装 xcode
  • 【软考中级·软件评测师】下午题·面向对象测试之架构考点全析:分层、分布式、微内核与事件驱动
  • 基于C#的OPCServer应用开发,引用WtOPCSvr.dll
  • python | numpy小记(五):理解 NumPy 中的 `np.arccos`:反余弦函数
  • 卡片跳转到应用页面(router事件)
  • 一文详解Modbus协议原理、技术细节及软件辅助调试
  • 华为云Flexus+DeepSeek征文|​​华为云ModelArts Studio大模型 + WPS:AI智能PPT生成解决方案​
  • 基于时间策略+应用过滤的游戏防沉迷方案:技术实现与工具推荐
  • 本地服务器部署后外网怎么访问不了?内网地址映射互联网上无法连接问题的排查
  • 【Pandas】pandas DataFrame Flags
  • AR 学习:开启未来学习新视界​