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

uniapp生命周期:应用生命周期和页面生命周期

文章目录

  • 1.应用的生命周期
  • 2.页面的生命周期

1.应用的生命周期

生命周期的概念:一个对象从创建、运行、销毁的整个过程被称为生命周期

生命周期函数:在生命周期中每个阶段会伴随着每一个函数的出发,这些函数被称为生命周期函数

所有页面都是在App.vue下进行切换的,是应用入口文件。但App.vue本身不是页面,这里不能编写视图元素,也就是没有<template>

这个文件的作用包括:监听应用生命周期、配置全局样式、配置全局的存储globalData

应用生命周期仅可在App.vue中监听,在页面监听无效。

uni-app 支持如下应用生命周期函数:

函数名说明平台兼容
onLaunchuni-app 初始化完成时触发(全局只触发一次),参数为应用启动参数,同 uni.getLaunchOptionsSync 的返回值
onShowuni-app 启动,或从后台进入前台显示,参数为应用启动参数,同 uni.getLaunchOptionsSync 的返回值
onHideuni-app 从前台进入后台
onErroruni-app 报错时触发app-uvue 不支持
onUniNViewMessagenvue 页面发送的数据进行监听,可参考 nvue 向 vue 通讯app-uvue 不支持
onUnhandledRejection对未处理的 Promise 拒绝事件监听函数(2.8.1+ app-uvue 暂不支持)app-uvue 不支持
onPageNotFound页面不存在监听函数app-uvue 不支持
onThemeChange监听系统主题变化app-uvue 不支持
onLastPageBackPress最后一个页面按下Android back键,常用于自定义退出app-uvue-android 3.9+
onExit监听应用退出app-uvue-android 3.9+

示例代码

<script>// 只能在App.vue里监听应用的生命周期export default {onLaunch: function(options) { // 初始化完成出发console.log('App Launch')console.log('应用启动路径:', options.path)},onShow: function(options) { // 显示成功会出发console.log('App Show')console.log('应用启动路径:', options.path)},onHide: function() {// 从前台进入后台 (隐藏会出发)console.log('App Hide')},onError: function() {// 报错时候触发console.log('App onError')}}
</script>

注意

  • 应用生命周期仅可在App.vue中监听,在其它页面监听无效
  • 以组合式 API 使用时,在 Vue2 和 Vue3 中存在一定区别,请分别参考:Vue2 组合式 API 使用文档 和 Vue3 组合式 API 使用文档。
  • 应用启动参数,可以在API uni.getLaunchOptionsSync获取,详见
  • onlaunch里进行页面跳转,如遇白屏报错,请参考https://ask.dcloud.net.cn/article/35942
  • App.vue 不能写模板
  • onPageNotFound 页面实际上已经打开了(比如通过分享卡片、小程序码)且发现页面不存在,才会触发,api 跳转不存在的页面不会触发(如 uni.navigateTo)

2.页面的生命周期

uni-app 页面除支持 Vue 组件生命周期外还支持下方页面生命周期函数,当以组合式 API 使用时,在 Vue2 和 Vue3 中存在一定区别,请分别参考:Vue2 组合式 API 使用文档 和 Vue3 组合式 API 使用文档。

函数名说明平台差异说明最低版本
onInit监听页面初始化,其参数同 onLoad 参数,为上个页面传递的数据,参数类型为 Object(用于页面传参),触发时机早于 onLoad百度小程序3.1.0+
onLoad监听页面加载,该钩子被调用时,响应式数据、计算属性、方法、侦听器、props、slots 已设置完成,其参数为上个页面传递的数据,参数类型为 Object(用于页面传参),参考示例。
onShow监听页面显示,页面每次出现在屏幕上都触发,包括从下级页面点返回露出当前页面
onReady监听页面初次渲染完成,此时组件已挂载完成,DOM 树($el)已可用,注意如果渲染速度快,会在页面进入动画完成前触发
onHide监听页面隐藏
onUnload监听页面卸载
onResize监听窗口尺寸变化App、微信小程序、快手小程序
onPullDownRefresh监听用户下拉动作,一般用于下拉刷新,参考示例
onReachBottom页面滚动到底部的事件(不是scroll-view滚到底),常用于下拉下一页数据。具体见下方注意事项
onTabItemTap点击 tab 时触发,参数为Object,具体见下方注意事项微信小程序、QQ小程序、支付宝小程序、百度小程序、H5、App、快手小程序、京东小程序
onShareAppMessage用户点击右上角分享微信小程序、QQ小程序、支付宝小程序、抖音小程序、飞书小程序、快手小程序、京东小程序
onPageScroll监听页面滚动,参数为Objectnvue不支持
onNavigationBarButtonTap监听原生标题栏按钮点击事件,参数为ObjectApp、H5
onBackPress监听页面返回,返回 event = {from:backbutton、 navigateBack} ,backbutton 表示来源是左上角返回按钮或 android 返回键;navigateBack表示来源是 uni.navigateBack;详见app、H5、支付宝小程序
onNavigationBarSearchInputChanged监听原生标题栏搜索输入框输入内容变化事件App、H51.6.0
onNavigationBarSearchInputConfirmed监听原生标题栏搜索输入框搜索事件,用户点击软键盘上的“搜索”按钮时触发。App、H51.6.0
onNavigationBarSearchInputClicked监听原生标题栏搜索输入框点击事件(pages.json 中的 searchInput 配置 disabled 为 true 时才会触发)App、H51.6.0
onShareTimeline监听用户点击右上角转发到朋友圈微信小程序2.8.1+
onAddToFavorites监听用户点击右上角收藏微信小程序、QQ小程序2.8.1+

示例代码

		onLoad(options) { // options上个页面跳转过来的参数console.log("页面加载了!", options) //执行一次},onShow() {console.log("页面显示了!") //可执行多次},onReady() {console.log("页面初次渲染完成!") //执行一次},onHide() {console.log("页面隐藏了!") //可执行多次},

http://www.lryc.cn/news/492780.html

相关文章:

  • 基于SSM的婴幼儿用品商城系统+LW示例参考
  • 【工具变量】城市供应链创新试点数据(2007-2023年)
  • 【carla生成车辆时遇到的问题】carla显示的坐标和carlaworld中提取的坐标y值相反
  • Jira使用笔记二 ScriptRunner 验证问题创建角色
  • Java线程的使用
  • 自动化测试工具Ranorex Studio(四十三)-RANOREXPATH编辑器5
  • 超高流量多级缓存架构设计!
  • 数据结构(Java)—— ArrayList
  • 实习冲刺第三十三天
  • Uniapp开发下拉刷新功能onPullDownRefresh/onReachBottom
  • 什么是 C++ 中的函数对象?函数对象与普通函数有什么区别?如何定义和使用函数对象?
  • PointNet++论文复现
  • 【VUE】el-table表格内输入框或者其他控件规则校验实现
  • django开发中html继承模板样式
  • MT6769/MTK6769核心板规格参数_联发科安卓主板开发板方案
  • 鸿蒙进阶篇-状态管理之@Provide与@Consume
  • java集合及源码
  • GraphRAG访问模式和知识图谱建模
  • TCP/IP协议攻击与防范
  • Java基于 SpringBoot+Vue的口腔管理平台(附源码+lw+部署)
  • 11.26深度学习_神经网络-数据处理
  • 【人工智能】Python常用库-TensorFlow常用方法教程
  • 微信小程序按字母顺序渲染城市 功能实现详细讲解
  • 23省赛区块链应用与维护(房屋租凭【下】)
  • 数据结构-图-领接表存储
  • 快速入门web安全
  • rabbitMq两种消费应答失败处理方式
  • Qt C++(一) 5.12安装+运行第一个项目
  • 【RISC-V CPU Debug 专栏 1 -- RISC-V debug 规范】
  • 使用Gradle编译前端的项目