深入浅析是什么意思(深入浅出解读)

lxf2023-05-03 09:38:01

本文为您带来了uniapp声明周期的相关知识,主要介绍了应用声明周期、页面生命周期和组件生命周期的相关问题,希望对您有所帮助。

深入浅析是什么意思(深入浅出解读)

推荐:uniapp教程

应用生命周期

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

函数名说明
onLaunchuni-app 初始化完成时触发(全局只触发一次)
onShowuni-app 启动,或从后台进入前台显示
onHideuni-app 从前台进入后台
onErroruni-app 报错时触发
onUniNViewMessagenvue 监控页面发送的数据,可参考页面发送的数据 nvue 向 vue 通讯
onUnhandledRejection对未处理的 Promise 事件监听函数(2.8).1 )
onPageNotFound页面上没有监听函数
onThemeChange监控系统主题发生变化

注意

  • 应用生命周期只能存在App.vue中间监控,在其他页面监控无效。
  • 在onlaunch中跳转页面,如果白屏报错,请参考onlaunch生命周期中的navigateto跳转页面 - DCloud问答
  • onPageNotFound 页面实际上已经打开了(例如,通过分享卡片、小程序码),并且发现页面不存在,才会触发,api 不存在跳转的页面不会被触发(如跳转不存在的页面) uni.navigateTo)

页面生命周期

uni-app 支持以下页面生命周期函数:

函数名说明说明平台差异最低版本
onInit监控页面初始化,其参数与参数相同 onLoad 参数,为上一页传输的数据,参数类型为 Object(用于页面传参),触发时间早于 onLoad百度小程序3.1.0
onLoad监控页面加载,其参数为上一页传输的数据,参数类型为 Object(用于页面传参),参考示例

onShow监控页面显示。每次页面出现在屏幕上,都会触发,包括从下级页面点返回,露出当前页面

onReady第一次完成监控页面渲染。注意,如果渲染速度快,会在页面进入动画完成前触发

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 ;详细说明及使用:onBackPress 详解。只有真机才能触发支付宝小程序,只能监控非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监听用户点击右上角收藏微信小程序2.8.1

onInit使用注意

  • 只有百度小程序基础库 3.260 以上支持 onInit 生命周期
  • 其他版本或平台可以同时使用 onLoad 兼容生命周期,注意避免重复执行相同的逻辑
  • 不依赖页面传参的逻辑可以直接使用 created 替代生命周期

onReachBottom使用注意 可以在pages中.json中定义了具体页面底部的触发距离onreachBottomdistance,例如设置为50,然后将页面滚动到距离底部50px时,就会触发onreachBottom事件。

如果使用scroll-view导致页面不滚动,则触底事件不会被触发。scroll-请参考scroll-view文档,将view滚到底部的事件

onPageScroll (监听滚动、滚动、滚动事件)参数说明:

属性类型说明
scrollTopNumber页面在垂直方向滚动的距离(单位px)

注意

  • onPageScroll不要写复杂的js,比如频繁修改页面。因为这个生命周期是由渲染层触发的,js是在非h5端的逻辑层执行的,两层之间的通信是有损失的。如果在滚动过程中频繁触发两层之间的数据交换,可能会造成卡住。
  • 如果您想在滚动时实现标题栏的透明渐变,在App和H5下,可以在pagess上.在json中配置titlenview下的type为transparent,参考。
  • 如果需要滚动吸顶固定某些元素,建议使用css的粘性布局,参考插件市场。插件市场上还有其他js实现的吸顶插件,但性能不好,需要时可以自己搜索。
  • 在App、在微信小程序、H5中,也可以使用wxs监控滚动,参考;在app-nvue中,可以使用bindingx监控滚动,参考。
  • onBackPress上不可使用async,会导致无法阻止默认返回
onPageScroll : function(e) { //nvue暂时不支持滚动监控,可以用bindingx代替
    console.log(