页面、组件、应用、生命周期(微信小程序)

文章目录

在微信小程序中,生命周期函数是指页面或组件在不同阶段会被自动调用的特定函数。这些函数可以帮助开发者在适当的时机完成特定的初始化、清理或交互逻辑。


页面生命周期函数

页面生命周期函数是作用于小程序中的页面,处理页面加载、显示、隐藏等事件。

函数名 描述
onLoad(options) 页面加载时触发,参数为打开当前页面路径中的参数。
onShow() 页面显示时触发,每次进入页面都会执行。
onReady() 页面初次渲染完成时触发,仅执行一次。
onHide() 页面被隐藏时触发,如跳转到其他页面或切入后台。
onUnload() 页面卸载时触发,如关闭当前页面或返回上一页。
onPullDownRefresh() 监听用户下拉刷新动作,需在 app.json 中开启 "enablePullDownRefresh"。
onReachBottom() 监听页面触底事件,如用于加载更多数据。
onPageScroll() 监听页面滚动,参数为滚动距离(单位 px)。
onShareAppMessage(options) 用户点击右上角分享时触发,可自定义分享内容。
onShareTimeline() 用户点击分享按钮分享到朋友圈时触发(需要设置 enableShareTimeline)。
onAddToFavorites() 用户点击收藏时触发,需设置 enableAddToFavorites 为 true。
onResize() 监听页面尺寸变化,如屏幕旋转(横竖屏切换)。
onTabItemTap(item) 监听点击 tab 时触发,仅在 tab 页面有效。

组件生命周期函数

组件生命周期函数用于处理组件的创建、更新、销毁等阶段的事件。

函数名 描述
created() 在组件实例刚刚被创建时触发。
attached() 在组件实例进入页面节点树时触发。
ready() 在组件布局完成后触发,可以操作 DOM 节点。
moved() 在组件实例被移动到其他位置时触发。
detached() 在组件实例被从页面节点树移除时触发。
error(error) 当组件方法抛出错误时触发,参数为错误信息。
lifetimes.show() 组件被展示时触发(支持页面级别的监听)。
lifetimes.hide() 组件被隐藏时触发(支持页面级别的监听)。
lifetimes.resize() 监听组件尺寸变化。

应用(App)生命周期函数

应用生命周期函数用于处理小程序的整体生命周期,主要是小程序的启动、切换前后台等。

函数名 描述
onLaunch(options) 小程序初始化时触发,全局只触发一次。
onShow(options) 小程序启动或从后台进入前台时触发。
onHide() 小程序从前台进入后台时触发。
onError(error) 小程序发生脚本错误或 API 调用失败时触发。
onUnhandledRejection(reason) 未处理的 Promise 拒绝触发。
onPageNotFound(options) 当页面不存在时触发,可进行页面跳转(最多触发一次)。
onThemeChange(theme) 小程序主题发生变化时触发,参数为主题信息。
onUnhandledRejection(reason) 未捕获的 Promise 错误触发,参数为错误原因。

页面与组件生命周期的执行顺序

  1. 页面首次加载时
    • App.onLaunch -> App.onShow -> Page.onLoad -> Page.onShow -> Page.onReady
  2. 页面切换
    • 离开页面:Page.onHide
    • 新页面加载:Page.onLoad -> Page.onShow -> Page.onReady
  3. 页面卸载
    • Page.onUnload
  4. 小程序切后台
    • Page.onHide -> App.onHide
  5. 小程序切回前台
    • App.onShow -> Page.onShow

注意事项

  1. onPullDownRefresh 和 onReachBottom

    • 需要在 app.json 或 page.json 中配置相应的功能开关。
    • 在数据加载完成后,需调用 wx.stopPullDownRefresh() 停止刷新动画。
  2. onShareAppMessage

    • 如果未定义该方法,分享时将无法自定义内容,显示默认的页面标题和链接。
  3. onPageNotFound

    • 必须在 App 的配置中设置 "entryPagePath" 否则可能不会触发。
  4. 组件生命周期

    • 对于组件与页面交互,需要关注组件的 attached 和 detached 阶段,以进行初始化和清理操作。

通过合理利用生命周期函数,可以更高效地管理小程序的状态和资源,提高开发体验和用户体验。

相关推荐
省钱兄--zs2 小时前
北京24小时自助健身房系统软件开发实战:从架构设计到部署指南
java·数据仓库·spring boot·小程序·需求分析
Ai-_Man5 小时前
您您这可以把Grok的多个会话比如说。左侧的多个会话一次性导出吗?不是单条会话里面的多次会对话。AI导出鸭
javascript·人工智能·ai·小程序·电脑
光影少年7 小时前
Taro 是如何解析入口配置 app.config.ts 和页面配置的?
微信小程序·小程序·typescript·reactjs·百度小程序·taro
用户7884773163410 小时前
门店核销闭环:小程序扫码 + .NET 幂等接口 + WPF 看板,一天能跑通
微信小程序·c#
DS小龙哥12 小时前
从呼吸心率到离床报警:60G雷达睡眠仪全栈开发实录(硬件+MQTT+小程序)DIY一台全功能睡眠监护仪
stm32·单片机·嵌入式硬件·物联网·小程序·智能家居
扶风ff15 小时前
练题簿在线免费刷题:刷题、背题、错题复习,一个小程序安排日常备考
学习·小程序
扶风ff15 小时前
练题簿在线免费刷题:共享题库、学习任务、在线考试,岗位培训更方便
学习·小程序
愚公搬代码17 小时前
【愚公系列】《微信小程序项目实战(AI编程+视频图解)》014-莫凡商城小程序项目视图容器组件的应用
微信小程序·小程序·ai编程
星光开发者1 天前
基于决策树随机森林算法的小说推荐系统的设计与实现-计算机毕设【课程设计】78485
vue.js·算法·微信小程序·django·php·课程设计·express
程xu袁1 天前
只有一段副歌,AI写歌选小程序、Suno还是海绵音乐?
小程序·suno·ai音乐·ai音乐工具·ai生成音乐·ai写歌工具