小程序中生命周期_小程序生命周期前端
一、应用生命周期(App 级)
在 app.js
中定义,管理整个小程序的全局状态。
1. 核心生命周期函数
onLaunch
onShow
onHide
onError
2. 代码示例
// app.jsApp({ onLaunch(options) { console.log(\'小程序初始化\', options.scene); // 场景值 }, onShow() { console.log(\'小程序显示\'); }, onHide() { console.log(\'小程序隐藏\'); }, onError(err) { console.error(\'全局错误:\', err); }});
3. 注意事项
-
onLaunch
的参数options
包含场景值(scene
)、启动路径(path
)等。 -
应用级生命周期无法访问页面数据,需通过全局变量
getApp()
共享数据。
二、页面生命周期(Page 级)
在页面的 .js
文件中定义,控制单个页面的行为。
1. 核心生命周期函数
onLoad
onShow
onReady
onHide
onUnload
2. 代码示例
// pages/index/index.jsPage({ onLoad(options) { console.log(\'页面加载,参数:\', options.id); this.setData({ id: options.id }); }, onShow() { console.log(\'页面显示\'); this.getData(); // 每次显示刷新数据 }, onReady() { console.log(\'页面渲染完成\'); this.initMap(); // 初始化地图 }, onUnload() { clearInterval(this.timer); // 清理定时器 }});
3. 特殊生命周期
-
页面事件处理(非必须):
onPullDownRefresh() { /* 下拉刷新 */ },onReachBottom() { /* 上拉触底 */ },onShareAppMessage() { /* 转发配置 */ }
三、生命周期执行顺序
1. 首次启动小程序
App.onLaunch → App.onShow → Page.onLoad → Page.onShow → Page.onReady
2. 从后台切换到前台
App.onShow → 当前页面.onShow
3. 跳转到新页面
原页面.onHide → 新页面.onLoad → 新页面.onShow → 新页面.onReady
四、最佳实践
-
数据初始化
-
静态数据:放在
onLoad
中(一次性请求)。 -
动态数据:放在
onShow
中(实时更新)。
-
-
性能优化
-
避免在
onReady
前操作 DOM(可能未渲染完成)。 -
使用
onUnload
及时释放资源(如 WebSocket 连接)。
-
-
参数传递
-
页面跳转参数通过
onLoad(options)
获取。 -
跨页面数据共享使用全局变量或缓存(
wx.setStorage
)。
-
五、调试技巧
-
开发者工具
-
控制台查看生命周期日志。
-
使用 AppData 面板 检查数据变化。
-
-
模拟场景
-
点击右上角“胶囊按钮”模拟后台切换。
-
使用
wx.navigateTo
和wx.navigateBack
测试页面栈。
-
六、常见问题
Q:onLoad
和 onShow
都请求数据,会重复吗?
→ 可通过标志位控制:
Page({ data: { isLoaded: false }, onLoad() { this.fetchData(); this.setData({ isLoaded: true }); }, onShow() { if (!this.data.isLoaded) this.fetchData(); }});
Q:如何强制重新触发 onLoad
?
→ 小程序默认不重新加载页面,需通过 wx.reLaunch
或清除页面栈:
wx.reLaunch({ url: \'/pages/index/index\' });