文章目录
在微信小程序中,生命周期函数是指页面或组件在不同阶段会被自动调用的特定函数。这些函数可以帮助开发者在适当的时机完成特定的初始化、清理或交互逻辑。
页面生命周期函数
页面生命周期函数是作用于小程序中的页面,处理页面加载、显示、隐藏等事件。
函数名 | 描述 |
---|---|
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 错误触发,参数为错误原因。 |
页面与组件生命周期的执行顺序
- 页面首次加载时
App.onLaunch
->App.onShow
->Page.onLoad
->Page.onShow
->Page.onReady
- 页面切换
- 离开页面:
Page.onHide
- 新页面加载:
Page.onLoad
->Page.onShow
->Page.onReady
- 离开页面:
- 页面卸载
Page.onUnload
- 小程序切后台
Page.onHide
->App.onHide
- 小程序切回前台
App.onShow
->Page.onShow
注意事项
-
onPullDownRefresh
和onReachBottom
- 需要在
app.json
或page.json
中配置相应的功能开关。 - 在数据加载完成后,需调用
wx.stopPullDownRefresh()
停止刷新动画。
- 需要在
-
onShareAppMessage
- 如果未定义该方法,分享时将无法自定义内容,显示默认的页面标题和链接。
-
onPageNotFound
- 必须在
App
的配置中设置"entryPagePath"
否则可能不会触发。
- 必须在
-
组件生命周期
- 对于组件与页面交互,需要关注组件的
attached
和detached
阶段,以进行初始化和清理操作。
- 对于组件与页面交互,需要关注组件的
通过合理利用生命周期函数,可以更高效地管理小程序的状态和资源,提高开发体验和用户体验。